Ik heb een functie gebouwd om iemand te laten betalen voor zijn acties in het spel. Hij update daarbij de grondstoffen in de tabel. Dit is de functie (Hij zal best korter kunnen)
<?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();
}
}
?>
Ik voor die uit doormiddel van dit:
<?php
pay($id, 400, 400, 400, "om dit te doen.");
?>
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
957 views