login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Rare bug met getallen

Offline Gamezhoek - 31/03/2006 17:26
Avatar van GamezhoekHTML interesse Ik heb een form waarbij iemand een getal in kan typen.
Stel hij typt 100 in, dan moet er 20 in de database bij komen.
Ik gebruik daar voor deze code:
  1. <?php
  2.  
  3. include 'index2.php';
  4. include 'config.php';
  5.  
  6. $aantal = $_POST['aantal'];
  7. $aantal = str_replace("\\", "", $aantal); //verwijder alle \
  8. $aantal = str_replace("<", "", $aantal); //verwijder alle <
  9. $aantal = str_replace(">", "", $aantal); //verwijder alle >
  10. $aantal = str_replace("(", "", $aantal); //verwijder alle (
  11. $aantal = str_replace(")", "", $aantal); //verwijder alle )
  12. $aantal = str_replace("[", "", $aantal); //verwijder alle [
  13. $aantal = str_replace("]", "", $aantal); //verwijder alle ]
  14. $aantal = str_replace(":", "", $aantal); //verwijder alle :
  15. $aantal = str_replace("-", "", $aantal); //verwijder alle -
  16.  
  17. $beschikbaar1 = mysql_query("SELECT promo FROM users WHERE id='".$_SESSION['login']."'");
  18. $beschikbaar2 = mysql_fetch_array($beschikbaar1);
  19. if($beschikbaar2['promo']<10*$aantal)
  20. {
  21. echo "Helaas, je hebt niet genoeg promo's. Klik <a href=loterij.php>hier</a> om terug te gaan.";
  22. }
  23. else
  24. {
  25. echo "Je hebt succesvol het gewenst aantal loten gekocht.";
  26.  
  27. for($i=0;$i<$aantal;$i++)
  28. {
  29. $lot1 = mysql_query("SELECT loten FROM users WHERE id='".$_SESSION['login']."'");
  30. $lot2 = mysql_fetch_array($lot1);
  31. $lot = $lot2['loten']+1;
  32. $query = mysql_query("UPDATE users SET loten='".$lot."' WHERE id='".$_SESSION['login']."'");
  33.  
  34. $user1 = mysql_query("SELECT name FROM users WHERE id='".$_SESSION['login']."'");
  35. $user2 = mysql_fetch_array($user1);
  36. mysql_query("INSERT INTO loterij (user) VALUES ('".$user2['name']."')");
  37. mysql_query("UPDATE users SET promo=promo-10 WHERE id='".$_SESSION['login']."'");
  38. mysql_query("INSERT INTO jackpot (bedrag) VALUES ($aantal/5)");
  39. }
  40. }
  41.  
  42. ?>

Maar er zit een rare bug in. Met grote getallen zoals 100 werkt het prima. Maar bijv. met 1 komt er geen 20% van het ingetypte getal meer bij. Maar gwn een ander raar getal.
Erg raar, want met grote getallen werkt het prima.
Het is dus de bedoeling dat er 20% van het ingetypte getal wordt ge-insert in de table jackpot. Het gaat om deze regel:
mysql_query("INSERT INTO jackpot (bedrag) VALUES ($aantal/5)");

Wie kan me helpen?

Alvast bedankt.

2 antwoorden

Gesponsorde links
Offline Stijn - 31/03/2006 17:54 (laatste wijziging 31/03/2006 17:58)
Avatar van Stijn PHP expert euhm wat is het type van bedrag? het moet float getallen (komma getallen) kunnen opslaan. met 100/5 = 20 kan hij die opslaan in numeric/integers omdat het geen komma getal heeft.

verander het type van veld `bedrag` naar FLOAT

bij grote komma's kan je DOUBLE selecteren
Offline Gamezhoek - 31/03/2006 18:26
Avatar van Gamezhoek HTML interesse Nee dat werkt ook niet...
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.193s