Probleem met bijwerken van de gegevens
Ik zit met het volgende probleem :
Ik maak een klikspelletje, waarbij je moet vechten.
Nu is het zo, dat als je op een attack style klikt (een button), dan zie je de hp van jou of van je tegenstander niet veranderd (wel in de database). Pas als je de pagina refreshed, word het pas op de pagina zelf veranderd.
Ik had het probleem eerder opgelost met een meta refresh, maar leek niet zo verstandig, omdat je ip regelmatig wordt geblokkeerd wegens teveel connecties maken...
Ik heb het ook probeert met header(), maar ook dat werkt niet.
Iemand een idee, hoe ik dat kan doen?
Stukje code
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
//AANVALLEN MET MELEE
if(isset($_POST['melee'])){
$killmode = "Melee";
//kijken of de gebruiker een dragonfire shield heeft
$shield = mysql_query("SELECT * FROM inventory WHERE player_name = '".$_SESSION['SESS_LOGIN_NAME']."' AND item_name = 'Dragonfire shield'")
or die(mysql_error());
$dragonfire = mysql_num_rows($shield);
//hit on npc
if(empty($info['selected_weapon'])){
$bonus = 0;
}else{
$wapen = mysql_query("SELECT * FROM weapons WHERE item_name = '".$info['selected_weapon']."'")
or die(mysql_error());
$wapeninfo = mysql_fetch_array($wapen);
$bonus = $wapeninfo['strength_bonus'];
}
$hit = $info['strength_lvl'] * 20;
$maxhit = $hit+$bonus;
$damagenpc = rand(0,$maxhit);
if($info['npc_hp'] > $damagenpc){
$damagetonpc = $damagenpc;
}else{
$damagetonpc = $info['npc_hp'];
}
//HIT ON PLAYER
//BEGIN ====== DRAGONFIRE//
if($dragonfire >='1' AND $info['npc_name']== 'King Dragon'){
$npc_maxhit ='1000';
}else{
$npc_maxhit = $info['npc_maxhit'];
}
//EINDE ====== DRAGONFIRE//
$damageplayer = rand(0,$npc_maxhit);
if($info['player_hp'] > $damageplayer){
$damagetoplayer = $damageplayer;
}else{
$damagetoplayer = $info['player_hp'];
}
mysql_query("UPDATE battles SET `npc_hp`='".$info['npc_hp']."'-'".$damagetonpc."',`player_hp`='".$info['player_hp']."'-'".$damagetoplayer."' WHERE player_name = '".$_SESSION['SESS_LOGIN_NAME']."'");
if($info['npc_hp'] > $maxhit){
header("location: battle-fix.php"); //dit was eerst de meta refresh, maar werkt helaas ook niet.
}
}
?>
//AANVALLEN MET MELEE
if(isset($_POST['melee'])){
$killmode = "Melee";
//kijken of de gebruiker een dragonfire shield heeft
$shield = mysql_query("SELECT * FROM inventory WHERE player_name = '".$_SESSION['SESS_LOGIN_NAME']."' AND item_name = 'Dragonfire shield'")
or die(mysql_error());
$dragonfire = mysql_num_rows($shield);
//hit on npc
if(empty($info['selected_weapon'])){
$bonus = 0;
}else{
$wapen = mysql_query("SELECT * FROM weapons WHERE item_name = '".$info['selected_weapon']."'")
or die(mysql_error());
$wapeninfo = mysql_fetch_array($wapen);
$bonus = $wapeninfo['strength_bonus'];
}
$hit = $info['strength_lvl'] * 20;
$maxhit = $hit+$bonus;
$damagenpc = rand(0,$maxhit);
if($info['npc_hp'] > $damagenpc){
$damagetonpc = $damagenpc;
}else{
$damagetonpc = $info['npc_hp'];
}
//HIT ON PLAYER
//BEGIN ====== DRAGONFIRE//
if($dragonfire >='1' AND $info['npc_name']== 'King Dragon'){
$npc_maxhit ='1000';
}else{
$npc_maxhit = $info['npc_maxhit'];
}
//EINDE ====== DRAGONFIRE//
$damageplayer = rand(0,$npc_maxhit);
if($info['player_hp'] > $damageplayer){
$damagetoplayer = $damageplayer;
}else{
$damagetoplayer = $info['player_hp'];
}
mysql_query("UPDATE battles SET `npc_hp`='".$info['npc_hp']."'-'".$damagetonpc."',`player_hp`='".$info['player_hp']."'-'".$damagetoplayer."' WHERE player_name = '".$_SESSION['SESS_LOGIN_NAME']."'");
if($info['npc_hp'] > $maxhit){
header("location: battle-fix.php"); //dit was eerst de meta refresh, maar werkt helaas ook niet.
}
}
?>
Form
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<form method="POST">
<input type="submit" value="Melee" onmouseover="mouseoversound.playclip()" class="attbtn" name="melee"/>
<input type="submit" value="Magic" onmouseover="mouseoversound.playclip()" class="attbtn" name="magic"/>
<input type="submit" value="Ranged" onmouseover="mouseoversound.playclip()" class="attbtn" name="ranged"/>
<?php
if(empty($info['selected_weapon'])){
$bonus = 0;
}else{
$wapen = mysql_query("SELECT * FROM weapons WHERE item_name = '".$info['selected_weapon']."'")
or die(mysql_error());
$wapeninfo = mysql_fetch_array($wapen);
$bonus = $wapeninfo['strength_bonus'];
}
$hit = $info['strength_lvl'] * 20;
$maxhit = $hit+$bonus;
?>
<select name="voedselkeuze">
<?php
$food = mysql_query("SELECT * FROM inventory WHERE player_name='".$_SESSION['SESS_LOGIN_NAME']."' AND category = 'food'");
while($eat = mysql_fetch_assoc($food)) {
echo "<option value='".$eat['item_name']."'>".$eat['item_amount']."x ".$eat['item_name']."</option>";
}
?>
</select>
<input type="submit" value="Eat" class="attbtn" onmouseover="mouseoversound.playclip()" name="food"/><br>
<select name="wapenkeuze">
<?php
$weapon = mysql_query("SELECT * FROM inventory WHERE player_name='".$_SESSION['SESS_LOGIN_NAME']."' AND category = 'weapon'");
while($selected_weapon = mysql_fetch_assoc($weapon)) {
echo "<option value='".$selected_weapon['item_name']."'>".$selected_weapon['item_name']."</option>";
}
?>
<input type="submit" value="Choose weapon" class="attbtn" onmouseover="mouseoversound.playclip()" name="chooseweapon"/
</form>
<input type="submit" value="Melee" onmouseover="mouseoversound.playclip()" class="attbtn" name="melee"/>
<input type="submit" value="Magic" onmouseover="mouseoversound.playclip()" class="attbtn" name="magic"/>
<input type="submit" value="Ranged" onmouseover="mouseoversound.playclip()" class="attbtn" name="ranged"/>
<?php
if(empty($info['selected_weapon'])){
$bonus = 0;
}else{
$wapen = mysql_query("SELECT * FROM weapons WHERE item_name = '".$info['selected_weapon']."'")
or die(mysql_error());
$wapeninfo = mysql_fetch_array($wapen);
$bonus = $wapeninfo['strength_bonus'];
}
$hit = $info['strength_lvl'] * 20;
$maxhit = $hit+$bonus;
?>
<select name="voedselkeuze">
<?php
$food = mysql_query("SELECT * FROM inventory WHERE player_name='".$_SESSION['SESS_LOGIN_NAME']."' AND category = 'food'");
while($eat = mysql_fetch_assoc($food)) {
echo "<option value='".$eat['item_name']."'>".$eat['item_amount']."x ".$eat['item_name']."</option>";
}
?>
</select>
<input type="submit" value="Eat" class="attbtn" onmouseover="mouseoversound.playclip()" name="food"/><br>
<select name="wapenkeuze">
<?php
$weapon = mysql_query("SELECT * FROM inventory WHERE player_name='".$_SESSION['SESS_LOGIN_NAME']."' AND category = 'weapon'");
while($selected_weapon = mysql_fetch_assoc($weapon)) {
echo "<option value='".$selected_weapon['item_name']."'>".$selected_weapon['item_name']."</option>";
}
?>
<input type="submit" value="Choose weapon" class="attbtn" onmouseover="mouseoversound.playclip()" name="chooseweapon"/
</form>
Gewijzigd op 28/04/2014 12:53:22 door Marco Eilander
Kan je wat relevante code laten zien?
- Aar - op 28/04/2014 11:03:40:
Kan je wat relevante code laten zien?
Ja hoor. Ik dacht dat het niet nodig zou zijn, aangezien ik hier alleen vraag om advies.
Gezien het feit dat je dan een POST opnieuw moet refreshen klinkt het mij eerder in de oren als een verkeerde opbouw van het script.
- Aar - op 28/04/2014 11:49:17:
Gezien het feit dat je dan een POST opnieuw moet refreshen klinkt het mij eerder in de oren als een verkeerde opbouw van het script.
Ik heb de code er bij gezet ;)
Marco Eilander op 28/04/2014 11:46:25:
Ik dacht dat het niet nodig zou zijn, aangezien ik hier alleen vraag om advies.
Je hebt een probleem. Staat tenminste in je topic-titel ;-)
Gaat dus niet alleen om advies, maar je wilt een oplossing.
Marco, zorg ervoor dat je eerst de "aanval" uitvoerd (updaten van je database) en haal dan de HP weer uit de database. Wat je nu doet is eerst ophalen en dan updaten. Dat is wat Aar bedoelt met een verkeerde opbouw van je script
Donny Wie weet op 28/04/2014 14:25:22:
Marco, zorg ervoor dat je eerst de "aanval" uitvoerd (updaten van je database) en haal dan de HP weer uit de database. Wat je nu doet is eerst ophalen en dan updaten. Dat is wat Aar bedoelt met een verkeerde opbouw van je script
Bedankt, ik zal er straks naar kijken en proberen.
Want ik moet het sowieso eerst ophalen, anders kan de battle niet beginnen.
Toevoeging :
Ik krijg het niet voor elkaar.
Gewijzigd op 01/05/2014 11:11:47 door Marco Eilander