Help! Hoe moet dit nou weer! PHP MYSQL
Dit is wat ik tot nu toe heb. De missiondone(..); zijn inbegrepen in een ander script, dat werkt!
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
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
<?php
if(isset($_POST['user'])) {
$user = mysql_fetch_query("SELECT autogestolen FROM users WHERE id = '" . $_POST['user'] "'");
$autosgestolen = $user['autogestolen'];
if($autogestolen < 20) {
if($autogestolen < 50) {
if($autogestolen < 100) {
if($autogestolen < 200) {
if($autogestolen < 300) {
if($autogestolen < 400) {
if($autogestolen < 500) {
if($autogestolen < 600) {
if($autogestolen < 700) {
if($autogestolen < 1000) {
} else {
missiondone(49)
}
} else {
missiondone(44)
}
} else {
missiondone(39)
}
} else {
missiondone(34)
}
} else {
missiondone(29)
}
} else {
missiondone(24)
}
} else {
missiondone(19)
}
} else {
missiondone(14)
}
} else {
missiondone(9)
}
} else {
missiondone(3)
}
} else {
missiondone(1)
}
?>
if(isset($_POST['user'])) {
$user = mysql_fetch_query("SELECT autogestolen FROM users WHERE id = '" . $_POST['user'] "'");
$autosgestolen = $user['autogestolen'];
if($autogestolen < 20) {
if($autogestolen < 50) {
if($autogestolen < 100) {
if($autogestolen < 200) {
if($autogestolen < 300) {
if($autogestolen < 400) {
if($autogestolen < 500) {
if($autogestolen < 600) {
if($autogestolen < 700) {
if($autogestolen < 1000) {
} else {
missiondone(49)
}
} else {
missiondone(44)
}
} else {
missiondone(39)
}
} else {
missiondone(34)
}
} else {
missiondone(29)
}
} else {
missiondone(24)
}
} else {
missiondone(19)
}
} else {
missiondone(14)
}
} else {
missiondone(9)
}
} else {
missiondone(3)
}
} else {
missiondone(1)
}
?>
alvast bedankt om me te helpen!
greetz, jenzzz
Graag in het vervolg bij code, [code] [/code] tags gebruiken. [/modedit]
Gewijzigd op 03/12/2010 11:15:29 door Bas IJzelendoorn
wat lukt er niet? zijn er errors? zo ja, kan je ze dan melden? hier hebben we natuurlijk niets aan!
En zet je code tussen de < ?php ? > tags (zonder spaties)
de volgorde van de tests (ifs) vind ik vreemd. Een waarde die kleiner is dan 20, is uiteraard ook kleiner dan 50; dus alle tests slagen, of falen, tegelijk.
elseif gaan werken:
En daarnaast kun je volgens mij beter met 1 if beginnen en dan met Wil je iets doen in het geval "meer dan 50", dan wil je dat wellicht ook doen in het geval "meer dan 100".
Dat hier andere control-structuren ook kunnen werken, dat lijkt me duidelijk. Wil ik pas iets over bedenken als ik de intentie van het blok ken.
de bedoeling is (rpg game) er wordt iedere keer als er een auto wordt gestolen +1 gedaan bij autogestolen in mysql database bij user. Nu wil ik dat er missies worden gecheckt bij het openen van deze pagina, bijvoorbeeld als er 200 auto's gestolen zijn zou missie 1,3,9,14 moeten voltooid geraken...
Hoop dat dit een beetje duidelijkheid schept....
Alvast bedankt voor de reacties!
Gewijzigd op 03/12/2010 13:38:50 door jens vandevelde
"missies worden gecheckt", is dat iets dat neveneffecten heeft, zoals het uitkeren van een bonus? Dan moet je testen op precies dat aantal diefstallen, anders krijgt je bezoeker steeds opnieuw de bonus. Ik zou er ook een datastruktuur(tje) omheen bouwen, want nu zit het gedrag wel heel erg door de code verspreid.
Deze: mysql_fetch_query(), kan ik niet vinden op php.net. Jullie wél?
Nee. Ik had gegokt dat het een pakpapiertje is om een (of meer) van de mysql-functies.
En ik gok ook nog lek voor SQL injection. Ik zie nergens iets dat $_POST['user'] beveiligd. En dat zal wel niet voor de isset() staan. En laten we maar zwijgen over fout afhandeling.
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
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
<?php
echo'
<div id="content_top"> </div>
<div id="content">
<h1 class="titel">Er wordt gecontroleerd op voltooide missies, wacht minstens 10 seconden op deze pagina!</h1>';
$user = mysql_fetch_query("SELECT autogestolen FROM users WHERE id = '" . $own['id'] "'");
$autosgestolen = $user['autogestolen'];
$array = array(
20 => 3,
50 => 9,
100 => 14,
200 => 19,
300 => 24,
400 => 29,
500 => 34,
600 => 39,
700 => 44,
1000 => 49
);
$stolen = $autosgestolen;
$argument = null;
foreach($array as $num => $arg)
if($stolen < $num) {
$argument = $arg;
break;
}
if(is_null($argument))
die('Error');
else
missiondone($argument);
echo'
</table>
</div>
<div id="content_bottom"> </div>';
?>
echo'
<div id="content_top"> </div>
<div id="content">
<h1 class="titel">Er wordt gecontroleerd op voltooide missies, wacht minstens 10 seconden op deze pagina!</h1>';
$user = mysql_fetch_query("SELECT autogestolen FROM users WHERE id = '" . $own['id'] "'");
$autosgestolen = $user['autogestolen'];
$array = array(
20 => 3,
50 => 9,
100 => 14,
200 => 19,
300 => 24,
400 => 29,
500 => 34,
600 => 39,
700 => 44,
1000 => 49
);
$stolen = $autosgestolen;
$argument = null;
foreach($array as $num => $arg)
if($stolen < $num) {
$argument = $arg;
break;
}
if(is_null($argument))
die('Error');
else
missiondone($argument);
echo'
</table>
</div>
<div id="content_bottom"> </div>';
?>
Toevoeging op 03/12/2010 23:17:30:
Dit vertoont gewoon een witte pagina...
error_reporting(E_ALL);
ini_set("display_errors", 1);
dus
Code (php)
1
2
3
4
5
2
3
4
5
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
en post even wat je dan ziet.
error_reporting(E_ALL);
ini_set("display_errors", 1);
en post even wat je dan ziet.
- SanThe - op 03/12/2010 14:18:15:
Deze: mysql_fetch_query(), kan ik niet vinden op php.net. Jullie wél?
Als je errors krijgt, post ze dan hier (zie post van Remco)
- SanThe - op 04/12/2010 06:54:31:
- SanThe - op 03/12/2010 14:18:15:
Deze: mysql_fetch_query(), kan ik niet vinden op php.net. Jullie wél?
Ik heb de vreemdste eigen functies gezien ;)
Code (php)
1
2
3
4
5
2
3
4
5
<?php
function mysql_fetch_query($sql) {
return mysql_fetch_assoc(mysql_query($sql));
}
?>
function mysql_fetch_query($sql) {
return mysql_fetch_assoc(mysql_query($sql));
}
?>
? ;)
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
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
<?php
echo'
<div id="content_top"> </div>
<div id="content">
error_reporting(E_ALL);
ini_set("display_errors", 1);
<h1 class="titel">Er wordt gecontroleerd op voltooide missies, wacht minstens 10 seconden op deze pagina!</h1>';
$user = mysql_fetch_assoc("SELECT autogestolen FROM users WHERE id = '" . $own['id'] "'");
$autosgestolen = $user['autogestolen'];
$array = array(
20 => 3,
50 => 9,
100 => 14,
200 => 19,
300 => 24,
400 => 29,
500 => 34,
600 => 39,
700 => 44,
1000 => 49
);
$stolen = $autosgestolen;
$argument = null;
foreach($array as $num => $arg)
if($stolen < $num) {
$argument = $arg;
break;
}
if(is_null($argument))
die('Error');
else
missiondone($argument);
echo'
</table>
</div>
<div id="content_bottom"> </div>';
?>
echo'
<div id="content_top"> </div>
<div id="content">
error_reporting(E_ALL);
ini_set("display_errors", 1);
<h1 class="titel">Er wordt gecontroleerd op voltooide missies, wacht minstens 10 seconden op deze pagina!</h1>';
$user = mysql_fetch_assoc("SELECT autogestolen FROM users WHERE id = '" . $own['id'] "'");
$autosgestolen = $user['autogestolen'];
$array = array(
20 => 3,
50 => 9,
100 => 14,
200 => 19,
300 => 24,
400 => 29,
500 => 34,
600 => 39,
700 => 44,
1000 => 49
);
$stolen = $autosgestolen;
$argument = null;
foreach($array as $num => $arg)
if($stolen < $num) {
$argument = $arg;
break;
}
if(is_null($argument))
die('Error');
else
missiondone($argument);
echo'
</table>
</div>
<div id="content_bottom"> </div>';
?>
heb ik gedaan en zie nog steeds een witte pagina :(