ge-include pagina "ververst" niet na Submit
Ik heb een probleempje waar ik niet helemaal uit kom.
Ik heb een Text-based "Crime" game gemaakt.
Hierin kunnen gebruikers "crimes" doen, auto's stelen, reizen, etc.
de opzet is als volgt:
index.php: heeft standaard <HTML> e.d. + include() functie waarmee alle opgevraagde pagina's worden opgenomen.
het probleem is, als er een crime is gedaan (SUBMIT) dan krijg ik netjes de tekst: "You tried to commit a crime!". Hier zou dan ook een teller moeten komen, zodat de user maar 1x in 2 minuten een Crime kan doen, en de SUBMIT button wordt gedeactiveerd.
Echter gebeurt dit pas als ik nogmaals in mijn menu op de crime-pagina klik. (dus een nieuwe/herlaadde versie van die pagina.)
Ik zou graag willen dat, als ik op SUBMIT klik gelijk alles weergegeven wordt. Zo ook dat het ontvangen bedrag na het succesvol uitvoeren van de "crime" direct zichtbaar opgeteld is bij het oude bedrag welke de user al had.
Ik snap dat de vraag wat complex is, maar hoop dat jullie mij kunnen helpen.
Gr.
Kevin
Ik volg je niet helemaal, maar op zich moet dit toch niet zo moeilijk zijn? Als jij op de submit button klikt dan refesht de pagina zichzelf toch al?
Ik krijg NA Submit wel: de tekst dat de crime is voldaan, maar alle gegevens worden pas ge-update nadat er een nieuwe pagina wordt geopend.
aan de rechterkant staat: Money $ 500
ik doe een crime, succesvol en verdien $ 67 (dit krijg ik te zien na Submit maar de stats aan de rechterkant zijn nog niet bijgewerkt)
zodra ik een nieuwe pagina openklik wordt het bedrag aan de rechterkant pas zichtbaar.
Kan je code laten zien over:
- Hoe een nieuwe crime wordt gedaan
- Hoe het geld uit de database wordt gehaald.
Let op bij het plaatsen van de codes wordt verwacht dat je deze tussen tags zet. Voor PHP gebruik je
<?php
?>
Gewijzigd op 16/08/2010 20:11:57 door Niels K
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
54
55
56
57
58
59
60
61
62
63
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
54
55
56
57
58
59
60
61
62
63
<?php
$now = date('Y-m-d H:i:s ');
//random number
srand ((double) microtime( )*1000000);
$random = rand(0,100);
$perc1 = round($crimesexp*1, 0) ; // 100
$perc2 = round($crimesexp*0.4, 0) ; // 250
$perc3 = round($crimesexp*0.174, 0) ; // 575
$perc4 = round($crimesexp*0.0833, 0) ; // 1200
$perc5 = round($crimesexp*0.04, 0) ; // 2500
$perc6 = round($crimesexp*0.01904, 0) ; // 5250
if ($perc1 >= 100) { $perc1 = 100 ; }
if ($perc2 >= 100) { $perc2 = 100 ; }
if ($perc3 >= 100) { $perc3 = 100 ; }
if ($perc4 >= 100) { $perc4 = 100 ; }
if ($perc5 >= 100) { $perc5 = 100 ; }
if ($perc6 >= 100) { $perc6 = 100 ; }
if(isset($_POST['submit'])){
$crime = $_REQUEST['crime'];
$crimestimernew = $_REQUEST['crimestimernew'];
if ($crime == '1') {
if ($random <= $perc1 ) {
$crimevalue = 3 ;
$expcrime = $crimesexp + $crimevalue ;
$crimeupdate = $crimessucces + 1 ;
srand ((double) microtime( )*1000000);
$crimemoney = rand(10,250);
$moneyupdate = $money + $crimemoney ;
mysql_query("UPDATE `DATABASE`.`TABLE` SET `crimessucces` = '$crimeupdate', `crimestimer` = '$crimestimernew' WHERE `TABLE`.`username` ='$usernamedbinfo' LIMIT 1") ;
mysql_query("UPDATE `DATABASE`.`TABLE` SET `money` = '$moneyupdate', `crimesEXP` = '$expcrime' WHERE `TABLE`.`username` ='$usernamedbinfo' LIMIT 1") ;
$message = "You succeeded, and earned £ $crimemoney";
} else {
$crimevalue = 0.4 ;
$expcrime = $crimesexp + $crimevalue ;
$crimeupdate = $crimesfail + 1 ;
mysql_query("UPDATE `DATABASE`.`TABLE` SET `crimesfail` = '$crimeupdate', `crimestimer` = '$crimestimernew' WHERE `TABLE`.`username` ='$usernamedbinfo' LIMIT 1") ;
mysql_query("UPDATE `DATABASE`.`TABLE` SET `crimesEXP` = '$expcrime' WHERE `TABLE`.`username` ='$usernamedbinfo' LIMIT 1") ;
$message = "You failed";
}
}
}
?>
$now = date('Y-m-d H:i:s ');
//random number
srand ((double) microtime( )*1000000);
$random = rand(0,100);
$perc1 = round($crimesexp*1, 0) ; // 100
$perc2 = round($crimesexp*0.4, 0) ; // 250
$perc3 = round($crimesexp*0.174, 0) ; // 575
$perc4 = round($crimesexp*0.0833, 0) ; // 1200
$perc5 = round($crimesexp*0.04, 0) ; // 2500
$perc6 = round($crimesexp*0.01904, 0) ; // 5250
if ($perc1 >= 100) { $perc1 = 100 ; }
if ($perc2 >= 100) { $perc2 = 100 ; }
if ($perc3 >= 100) { $perc3 = 100 ; }
if ($perc4 >= 100) { $perc4 = 100 ; }
if ($perc5 >= 100) { $perc5 = 100 ; }
if ($perc6 >= 100) { $perc6 = 100 ; }
if(isset($_POST['submit'])){
$crime = $_REQUEST['crime'];
$crimestimernew = $_REQUEST['crimestimernew'];
if ($crime == '1') {
if ($random <= $perc1 ) {
$crimevalue = 3 ;
$expcrime = $crimesexp + $crimevalue ;
$crimeupdate = $crimessucces + 1 ;
srand ((double) microtime( )*1000000);
$crimemoney = rand(10,250);
$moneyupdate = $money + $crimemoney ;
mysql_query("UPDATE `DATABASE`.`TABLE` SET `crimessucces` = '$crimeupdate', `crimestimer` = '$crimestimernew' WHERE `TABLE`.`username` ='$usernamedbinfo' LIMIT 1") ;
mysql_query("UPDATE `DATABASE`.`TABLE` SET `money` = '$moneyupdate', `crimesEXP` = '$expcrime' WHERE `TABLE`.`username` ='$usernamedbinfo' LIMIT 1") ;
$message = "You succeeded, and earned £ $crimemoney";
} else {
$crimevalue = 0.4 ;
$expcrime = $crimesexp + $crimevalue ;
$crimeupdate = $crimesfail + 1 ;
mysql_query("UPDATE `DATABASE`.`TABLE` SET `crimesfail` = '$crimeupdate', `crimestimer` = '$crimestimernew' WHERE `TABLE`.`username` ='$usernamedbinfo' LIMIT 1") ;
mysql_query("UPDATE `DATABASE`.`TABLE` SET `crimesEXP` = '$expcrime' WHERE `TABLE`.`username` ='$usernamedbinfo' LIMIT 1") ;
$message = "You failed";
}
}
}
?>
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
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
<table align="center" width="90%">
<tr>
<td colspan="2" align="center"><h1>Crimes</h1></td>
</tr>
<?php
if ($now < $crimestimer) { echo "<tr><td colspan='2' align='center' id='remain'></td></tr>"; }
?>
<tr>
<td align="center">
<?php
if(isset($_POST['submit'])){
if ($crime != '') { echo "You tried to commit a crime!<br />"; }
echo "$message";
}
?>
<br /><br />
<form method="post">
<table align="center">
<tr>
<td><input type="radio" name="crime" value="6">Steal a Money Courier Van</td>
<td><?php if($crimesexp >= 630) { echo "$perc6"; } else { echo "0"; } ?>%</td>
</tr>
<tr>
<td><input type="radio" name="crime" value="5">Rob a Petrol Station</td>
<td><?php if($crimesexp >= 300) { echo "$perc5"; } else { echo "0"; } ?>%</td>
</tr>
<tr>
<td><input type="radio" name="crime" value="4">Rob a Post Office</td>
<td><?php if($crimesexp >= 144) { echo "$perc4"; } else { echo "0"; } ?>%</td>
</tr>
<tr>
<td><input type="radio" name="crime" value="3">Steal from a Rich Housing Estate</td>
<td><?php if($crimesexp >= 69) { echo "$perc3"; } else { echo "0"; } ?>%</td>
</tr>
<tr>
<td><input type="radio" name="crime" value="2">Steal from a Car</td>
<td><?php if($crimesexp >= 30) { echo "$perc2"; } else { echo "0"; } ?>%</td>
</tr>
<tr>
<td><input type="radio" name="crime" value="1">Steal from a Pedestrian</td>
<td><?php echo "$perc1"; ?>%</td>
</tr>
<tr>
<input type="hidden" name="crimestimernew" value="<?php echo date('Y-m-d H:i:s', strtotime('+2 minutes')); ?>">
<td colspan="2" align="center"><input type="submit" value="Commit" name="submit" <?php if ($now < $crimestimer) { echo "disabled"; } ?>></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
<tr>
<td colspan="2" align="center"><h1>Crimes</h1></td>
</tr>
<?php
if ($now < $crimestimer) { echo "<tr><td colspan='2' align='center' id='remain'></td></tr>"; }
?>
<tr>
<td align="center">
<?php
if(isset($_POST['submit'])){
if ($crime != '') { echo "You tried to commit a crime!<br />"; }
echo "$message";
}
?>
<br /><br />
<form method="post">
<table align="center">
<tr>
<td><input type="radio" name="crime" value="6">Steal a Money Courier Van</td>
<td><?php if($crimesexp >= 630) { echo "$perc6"; } else { echo "0"; } ?>%</td>
</tr>
<tr>
<td><input type="radio" name="crime" value="5">Rob a Petrol Station</td>
<td><?php if($crimesexp >= 300) { echo "$perc5"; } else { echo "0"; } ?>%</td>
</tr>
<tr>
<td><input type="radio" name="crime" value="4">Rob a Post Office</td>
<td><?php if($crimesexp >= 144) { echo "$perc4"; } else { echo "0"; } ?>%</td>
</tr>
<tr>
<td><input type="radio" name="crime" value="3">Steal from a Rich Housing Estate</td>
<td><?php if($crimesexp >= 69) { echo "$perc3"; } else { echo "0"; } ?>%</td>
</tr>
<tr>
<td><input type="radio" name="crime" value="2">Steal from a Car</td>
<td><?php if($crimesexp >= 30) { echo "$perc2"; } else { echo "0"; } ?>%</td>
</tr>
<tr>
<td><input type="radio" name="crime" value="1">Steal from a Pedestrian</td>
<td><?php echo "$perc1"; ?>%</td>
</tr>
<tr>
<input type="hidden" name="crimestimernew" value="<?php echo date('Y-m-d H:i:s', strtotime('+2 minutes')); ?>">
<td colspan="2" align="center"><input type="submit" value="Commit" name="submit" <?php if ($now < $crimestimer) { echo "disabled"; } ?>></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
hoop dat ik het zo goed heb gedaan..
Toevoeging op 16/08/2010 20:22:33:
Alle database info wordt opgehaald door: dbinfo.php
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
54
55
56
57
58
59
60
61
62
63
64
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
54
55
56
57
58
59
60
61
62
63
64
<?php
$select = mysql_query("SELECT * FROM Users WHERE username='$usernamedbinfo'");
$aantal = mysql_num_rows($select);
for ($i=0; $i < $aantal; $i = $i + 1) {
$unid = mysql_result($select,$i,0) ;
$username = mysql_result($select,$i,1) ;
$email = mysql_result($select,$i,2) ;
$password = mysql_result($select,$i,3) ;
$ipadress = mysql_result($select,$i,4) ;
$joindate = mysql_result($select,$i,5) ;
$profilemsg = mysql_result($select,$i,6) ;
}
$select = mysql_query("SELECT * FROM Userstats WHERE username='$usernamedbinfo'");
$aantal = mysql_num_rows($select);
for ($i=0; $i < $aantal; $i = $i + 1) {
$unid = mysql_result($select,$i,0) ;
$username = mysql_result($select,$i,1) ;
$crew = mysql_result($select,$i,2) ;
$gun = mysql_result($select,$i,3) ;
$bullets = mysql_result($select,$i,4) ;
$protection = mysql_result($select,$i,5) ;
$health = mysql_result($select,$i,6) ;
$money = mysql_result($select,$i,7) ;
$exp = mysql_result($select,$i,8) ;
$rank = mysql_result($select,$i,9) ;
$state = mysql_result($select,$i,10) ;
$crimesexp = mysql_result($select,$i,11) ;
$gtaexp = mysql_result($select,$i,12) ;
}
if($money <= 0) { $money = 0 ;}
$select = mysql_query("SELECT * FROM Userstats2 WHERE username='$usernamedbinfo'");
$aantal = mysql_num_rows($select);
for ($i=0; $i < $aantal; $i = $i + 1) {
$unid = mysql_result($select,$i,0) ;
$username = mysql_result($select,$i,1) ;
$crimessucces = mysql_result($select,$i,2) ;
$crimesfail = mysql_result($select,$i,3) ;
$gtasucces = mysql_result($select,$i,4) ;
$gtafail = mysql_result($select,$i,5) ;
$forumposts = mysql_result($select,$i,6) ;
$forumreplies = mysql_result($select,$i,7) ;
$bustssucces = mysql_result($select,$i,8) ;
$bustsfail = mysql_result($select,$i,9) ;
$killssucces = mysql_result($select,$i,10) ;
$killsfail = mysql_result($select,$i,11) ;
$brsucces = mysql_result($select,$i,12) ;
$brfail = mysql_result($select,$i,13) ;
$travelcar = mysql_result($select,$i,14) ;
$traveltrain = mysql_result($select,$i,15) ;
$crimestimer = mysql_result($select,$i,16) ;
$gtatimer = mysql_result($select,$i,17) ;
}
?>
$select = mysql_query("SELECT * FROM Users WHERE username='$usernamedbinfo'");
$aantal = mysql_num_rows($select);
for ($i=0; $i < $aantal; $i = $i + 1) {
$unid = mysql_result($select,$i,0) ;
$username = mysql_result($select,$i,1) ;
$email = mysql_result($select,$i,2) ;
$password = mysql_result($select,$i,3) ;
$ipadress = mysql_result($select,$i,4) ;
$joindate = mysql_result($select,$i,5) ;
$profilemsg = mysql_result($select,$i,6) ;
}
$select = mysql_query("SELECT * FROM Userstats WHERE username='$usernamedbinfo'");
$aantal = mysql_num_rows($select);
for ($i=0; $i < $aantal; $i = $i + 1) {
$unid = mysql_result($select,$i,0) ;
$username = mysql_result($select,$i,1) ;
$crew = mysql_result($select,$i,2) ;
$gun = mysql_result($select,$i,3) ;
$bullets = mysql_result($select,$i,4) ;
$protection = mysql_result($select,$i,5) ;
$health = mysql_result($select,$i,6) ;
$money = mysql_result($select,$i,7) ;
$exp = mysql_result($select,$i,8) ;
$rank = mysql_result($select,$i,9) ;
$state = mysql_result($select,$i,10) ;
$crimesexp = mysql_result($select,$i,11) ;
$gtaexp = mysql_result($select,$i,12) ;
}
if($money <= 0) { $money = 0 ;}
$select = mysql_query("SELECT * FROM Userstats2 WHERE username='$usernamedbinfo'");
$aantal = mysql_num_rows($select);
for ($i=0; $i < $aantal; $i = $i + 1) {
$unid = mysql_result($select,$i,0) ;
$username = mysql_result($select,$i,1) ;
$crimessucces = mysql_result($select,$i,2) ;
$crimesfail = mysql_result($select,$i,3) ;
$gtasucces = mysql_result($select,$i,4) ;
$gtafail = mysql_result($select,$i,5) ;
$forumposts = mysql_result($select,$i,6) ;
$forumreplies = mysql_result($select,$i,7) ;
$bustssucces = mysql_result($select,$i,8) ;
$bustsfail = mysql_result($select,$i,9) ;
$killssucces = mysql_result($select,$i,10) ;
$killsfail = mysql_result($select,$i,11) ;
$brsucces = mysql_result($select,$i,12) ;
$brfail = mysql_result($select,$i,13) ;
$travelcar = mysql_result($select,$i,14) ;
$traveltrain = mysql_result($select,$i,15) ;
$crimestimer = mysql_result($select,$i,16) ;
$gtatimer = mysql_result($select,$i,17) ;
}
?>
Gewijzigd op 16/08/2010 20:28:05 door Kevin Rovers
ik ben nieuw hier
Kevin Rovers op 16/08/2010 20:23:41:
als je uitlegt hoe, doe ik het met plezier ;)
ik ben nieuw hier
ik ben nieuw hier
Die verdomde kut parser kan niet ignore. Terwijl dat wel zou moeten.
Aangepast :)
- Foute queries
- backticks
- Geen foutenafhandeling
- Gebruik van oud PHP
- SQL injection mogelijk
- Geen commentaar in de code
- Variablen buiten de quotes
- Je gebruikt hele vage queries.. UPDATE DATABASE . $TABLE ?:O
Waarschijnlijk ook XSS injection mogelijk.
En zo kunnen we nog wel even door gaan.. Heb je dit script van internet gedownload?
EDIT:
Ja inderdaad karl, dat wilde ik dus bij mijn eerste post al doen.. maar toen merkte ik dat hij dat niet deed..
Gewijzigd op 16/08/2010 20:31:09 door Niels K
W00t wat voor onzin moet dbinfo.php voorstellen?
overige code heb ik zelf gemaakt.
Voor de duidelijkheid, ik heb een gedeelte van de code weggelaten aangezien hij 6x hetzelfde doet. (daar er 6 crimes zijn).
EDIT:
Ok dan, tja je zult je script toch drastisch moeten veranderen op de punten die ik in mijn vorige post heb aangegeven..
Gewijzigd op 16/08/2010 20:32:55 door Niels K
Karl Karl op 16/08/2010 20:30:34:
W00t wat voor onzin moet dbinfo.php voorstellen?
Hier haalt hij alles op uit de database.
Lees mijn edit van de vorige post;)
Kevin Rovers op 16/08/2010 20:32:28:
Hier haalt hij alles op uit de database.
Karl Karl op 16/08/2010 20:30:34:
W00t wat voor onzin moet dbinfo.php voorstellen?
Hier haalt hij alles op uit de database.
Selecteer wat je wilt hebben, gebruik niet *. Variabelen buiten quotes. De boel wordt daar gewoon overschreven omdat je steeds dezelfde variabele gebruikt. Ooit gehoord van mysql_fetch_assoc?
maar kan dit de fout zijn waardoor de pagina niet alles weergeeft?
Toevoeging op 16/08/2010 20:37:53:
Karl Karl op 16/08/2010 20:35:26:
Selecteer wat je wilt hebben, gebruik niet *. Variabelen buiten quotes. De boel wordt daar gewoon overschreven omdat je steeds dezelfde variabele gebruikt. Ooit gehoord van mysql_fetch_assoc?
Kevin Rovers op 16/08/2010 20:32:28:
Hier haalt hij alles op uit de database.
Karl Karl op 16/08/2010 20:30:34:
W00t wat voor onzin moet dbinfo.php voorstellen?
Hier haalt hij alles op uit de database.
Selecteer wat je wilt hebben, gebruik niet *. Variabelen buiten quotes. De boel wordt daar gewoon overschreven omdat je steeds dezelfde variabele gebruikt. Ooit gehoord van mysql_fetch_assoc?
nee, helaas niet..
heb nog veel te leren merk ik.
ik snap wat je bedoelt met het overschrijven.
Ik moet inderdaad de database nog herschrijven..
Overigs zijn tabellen ook een big nono om je lay-out in te maken.
En dit is dus precies de reden waarom criminals zo slecht zijn.
Let dan op de dingen die ik heb aangegeven. Lees desnoods nog even deze tutorial klik en deze klik en kijk eens naar dit script en dit script
Succes!
EDIT
Inderdaad karl, en TS misschien is het handig om deze discussie te volgen
Gewijzigd op 16/08/2010 20:40:49 door Niels K
ok bedankt! ik ga ermee aan de slag.
Succes, en als je vragen hebt horen wij dat uiteraard graag