query wordt te vaak uitgevoerd
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
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
<?php
function pay($id, $hout, $vis, $katoen, $error)
{
$sql2 = "SELECT hout, vis, katoen FROM spellog WHERE id = '".$id."'";
$res2 = mysql_query($sql2);
if(!$res2)
{
echo mysql_error();
foot();
exit();
}
$row2 = mysql_fetch_array($res2);
$houth = $row2['hout'];
$vish = $row2['vis'];
$katoenh = $row2['katoen'];
$houtn = $houth - $hout;
$visn = $vish - $vis;
$katoenn = $katoenh - $katoen;
if($houtn < 0)
{$gr = "hout";}
elseif($visn < 0)
{$gr = "vis";}
elseif($katoenn < 0)
{$gr = "katoen";}
if(isset($gr))
{
echo 'Je hebt niet genoeg '.$gr.' '.$error.'';
foot();
exit();
}
$sql3 = "UPDATE spellog SET hout = '".$houtn."', vis = '".$visn."', katoen = '".$katoenn."' WHERE id = '".$id."'";
$res3 = mysql_query($sql3);
if(!$res3)
{
echo mysql_error();
foot();
exit();
}
}
?>
function pay($id, $hout, $vis, $katoen, $error)
{
$sql2 = "SELECT hout, vis, katoen FROM spellog WHERE id = '".$id."'";
$res2 = mysql_query($sql2);
if(!$res2)
{
echo mysql_error();
foot();
exit();
}
$row2 = mysql_fetch_array($res2);
$houth = $row2['hout'];
$vish = $row2['vis'];
$katoenh = $row2['katoen'];
$houtn = $houth - $hout;
$visn = $vish - $vis;
$katoenn = $katoenh - $katoen;
if($houtn < 0)
{$gr = "hout";}
elseif($visn < 0)
{$gr = "vis";}
elseif($katoenn < 0)
{$gr = "katoen";}
if(isset($gr))
{
echo 'Je hebt niet genoeg '.$gr.' '.$error.'';
foot();
exit();
}
$sql3 = "UPDATE spellog SET hout = '".$houtn."', vis = '".$visn."', katoen = '".$katoenn."' WHERE id = '".$id."'";
$res3 = mysql_query($sql3);
if(!$res3)
{
echo mysql_error();
foot();
exit();
}
}
?>
Ik voor die uit doormiddel van dit:
Hierdoor laat hij de speler met id $id 400 van alle grondstoffen betalen. Dat doet hij netjes, de grondstoffen die ernaast staan gaan inderdaad 400 omlaag.
Maar dan komt het probleem. Als je daarna de pagina verlaat, voert hij de query nog eens 2 keer uit, en haalt hij dus nog 800 van alle grondstoffen eraf. Ook als ik de functie niet gebruik maar gewoon alles in de pagina zelf zet voert hij de query te vaak uit.
Rara, hoe kan dat? :S
doe eens return $sql2 ipv het uitvoeren ervan, kan je iig waar het opgeroepen word
De query's kloppen, maar het zit ook niet in de query, want hij voert de query eerst gewoon uit zoals het hoort. Pas als je de pagina verlaat vooert hij de query nóg 2 keer uit.
niemand? :'(
Hoevaak roep je de functie Pay aan?