Bij een vergelijking voor een balans krijg ik een uitkomst die helemaal niet klopt. Ik zal wat code laten zien:
Ik krijg als output:
Echter, als ik nu deze comments weghaal:
#echo 'after making balance static it is:<br>';
#$balance = 1.2;
#echo 'balance is: '.gettype($balance).' and is '.$balance.'<br>';
Dan krijg ik:
balance is: double and is 1.2
amount is: double and is 1.2
after making balance static it is:
balance is: double and is 1.2
Succesvol toegevoegd.
(Dat succesvol krijg je als $error leeg blijft).
Zoals je ziet er helemaal _niets_ veranderd aan de $balance! Het is 1.2, net zoals nadat ik hem dat handmatig nog even vertel! Ik heb ook al eens $balance = $balacen * 1; gedaan, maar dan werkt het ook nog steeds niet.
Jah, mijn manier van de balans opsommen kan ik ook door MySQL laten doen, maar deze quick'n'dirty methode moet toch ook gewoon werken!
Ik heb dit ook nog geprobeerd:
$balance dus eerst even als een string. Dat werkt prima?! In mijn script staan verder geen vreemde dingen, $amount wordt gewoon gezet met deze berekening (dat vind ik makkelijk als ik later iets moet aanpassen):
$amount = round((-1.30 + 0.102),2);
En als ik dat in dat bovenstaande script invul, geeft ook dat script nog steeds "ok" terug. Ik draai PHP versie 5.0.5.
Zie ik iets over het hoofd? Ik zit nu een uur al werkelijk _alles_ te proberen, maar het blijft deze fout geven, en ik zie gewoon _niet_ wat ik fout doe, waardoor ik bang ben dat dit een PHP bug is? Bedankt voor het kijken!
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| // Check if the user has enough money on his balance. $amount = $amount * -1; // amount even positief maken $query_balance = mysql_query("SELECT * FROM `user_balance` WHERE `userid`='".$users_info['id']."'") or die(mysql_error()); $balance = 0; while ($disp_balance = mysql_fetch_array($query_balance)){ $balance = $balance + $disp_balance['change']; } #$balance = 1.2; #$balance = $balance * 1; echo 'balance is: '.gettype($balance).' and is '.$balance.'<br>'; echo 'amount is: '.gettype($amount).' and is '.$amount.'<br>'; #echo 'after making balance static it is:<br>'; #$balance = 1.2; #echo 'balance is: '.gettype($balance).' and is '.$balance.'<br>'; if ($amount > $balance){ $error .= '>Er staat niet genoeg geld op uw balans. Kies voor "Mijn balans" in het menu en voeg door te bellen geld toe aan uw balans. (U heeft nodig: '.$amount.' Euro en op uw balans staat '.$balance.' Euro)'; } |
Ik krijg als output:
Maar dat klopt niet, want het is beide 1.2! En ik gebruik niet een >= maar een > vergelijking!balance is: double and is 1.2
amount is: double and is 1.2
Er was een probleem bij het toevoegen van uw account:
>Er staat niet genoeg geld op uw balans. Kies voor "Mijn balans" in het menu en voeg door te bellen geld toe aan uw balans. (U heeft nodig: 1.2 Euro en op uw balans staat 1.2 Euro)
Echter, als ik nu deze comments weghaal:
#echo 'after making balance static it is:<br>';
#$balance = 1.2;
#echo 'balance is: '.gettype($balance).' and is '.$balance.'<br>';
Dan krijg ik:
balance is: double and is 1.2
amount is: double and is 1.2
after making balance static it is:
balance is: double and is 1.2
Succesvol toegevoegd.
(Dat succesvol krijg je als $error leeg blijft).
Zoals je ziet er helemaal _niets_ veranderd aan de $balance! Het is 1.2, net zoals nadat ik hem dat handmatig nog even vertel! Ik heb ook al eens $balance = $balacen * 1; gedaan, maar dan werkt het ook nog steeds niet.
Jah, mijn manier van de balans opsommen kan ik ook door MySQL laten doen, maar deze quick'n'dirty methode moet toch ook gewoon werken!
Ik heb dit ook nog geprobeerd:
PHP:
1
2
3
4
5
6
7
8
9
10
11
| <? $balance = '1.2'; $amount = 1.2; if ($amount > $balance){ echo 'te weinig op balans'; } else { echo 'ok'; } // geeft dus wel ok terug??? ?> |
$balance dus eerst even als een string. Dat werkt prima?! In mijn script staan verder geen vreemde dingen, $amount wordt gewoon gezet met deze berekening (dat vind ik makkelijk als ik later iets moet aanpassen):
$amount = round((-1.30 + 0.102),2);
En als ik dat in dat bovenstaande script invul, geeft ook dat script nog steeds "ok" terug. Ik draai PHP versie 5.0.5.
Zie ik iets over het hoofd? Ik zit nu een uur al werkelijk _alles_ te proberen, maar het blijft deze fout geven, en ik zie gewoon _niet_ wat ik fout doe, waardoor ik bang ben dat dit een PHP bug is? Bedankt voor het kijken!