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
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? :'(
3 keer, met verschillende waardes, in een switch:

<?php

switch ($actie) {
case 1:
pay(alle waardes);
break;
case 2:
pay(alle waardes);
break;
case 3:
pay(alle waardes);
break;
}

?>

Reageren