[PHP] Vermedigvuldigen met kommagetallen bug

Gestart doorTrans18 reacties51 weergaven

19 berichten · pagina 1 van 2

Trans

Lid · Topicstarter

Berichten
387
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ik ben bezig met een systeem die uitrekent wat de totale kosten is.
Alleen met kommagetallen doet die raar.
Want als ik 4,99 x 1 doe krijg ik als antwoord 4.
En als ik 4,99 x 50 doe komt er 200 uit.

Weet iemand waar dit aan kan liggen?
0
Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Geef eens code
0
Trans

Lid · Topicstarter

Berichten
387
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Dit is het script

[COLOR= #0000BB]<?php[/COLOR]    
    [URL="http://www.php.net/include"]include[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]config.php[/COLOR][COLOR= #007700]);[/COLOR]
    
    [COLOR= #0000BB]$aantal[/COLOR][COLOR= #007700]=[/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]aantal[/COLOR][COLOR= #007700]];[/COLOR] 
    [COLOR= #0000BB]$prijsper[/COLOR][COLOR= #007700]=[/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]prijsper[/COLOR][COLOR= #007700]];[/COLOR]
    
    [COLOR= #0000BB]$prijstot[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$aantal[/COLOR] [COLOR= #007700]*[/COLOR] [COLOR= #0000BB]$prijsper[/COLOR][COLOR= #007700];[/COLOR]

    [URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"UPDATE `winkelwagen` SET  `aantal` =  $aantal, `prijstot` =  $prijstot WHERE  `winkelwagen`.`id` ="[/COLOR][COLOR= #007700].[/COLOR]htmlspecialchars[COLOR= #007700]([/COLOR][COLOR= #0000BB]$_GET[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]"id"[/COLOR][COLOR= #007700]]).[/COLOR][COLOR= #DD0000]";"[/COLOR][COLOR= #007700]);[/COLOR]
    [URL="http://www.php.net/header"]header[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"location:winkelwagen.php"[/COLOR][COLOR= #007700]);[/COLOR]
?>
0
Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Trans schreef:
Dit is het script

[COLOR= #0000BB]<?php[/COLOR]    
    [URL="http://www.php.net/include"]include[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]config.php[/COLOR][COLOR= #007700]);[/COLOR]
    
    [COLOR= #0000BB]$aantal[/COLOR][COLOR= #007700]=[/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]aantal[/COLOR][COLOR= #007700]];[/COLOR] 
    [COLOR= #0000BB]$prijsper[/COLOR][COLOR= #007700]=[/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]prijsper[/COLOR][COLOR= #007700]];[/COLOR]
    
    [COLOR= #0000BB]$prijstot[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$aantal[/COLOR] [COLOR= #007700]*[/COLOR] [COLOR= #0000BB]$prijsper[/COLOR][COLOR= #007700];[/COLOR]

    [URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"UPDATE `winkelwagen` SET  `aantal` =  $aantal, `prijstot` =  $prijstot WHERE  `winkelwagen`.`id` ="[/COLOR][COLOR= #007700].[/COLOR]htmlspecialchars[COLOR= #007700]([/COLOR][COLOR= #0000BB]$_GET[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]"id"[/COLOR][COLOR= #007700]]).[/COLOR][COLOR= #DD0000]";"[/COLOR][COLOR= #007700]);[/COLOR]
    [URL="http://www.php.net/header"]header[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"location:winkelwagen.php"[/COLOR][COLOR= #007700]);[/COLOR]
?>
Tip: gebruik mysql_real_escape_string en gebruik mysql_real_escape_string ipv htmlspecialchars.

Geef ook een foutmelding mee als de query is misluk!

[COLOR= #0000BB]<?php[/COLOR]    
    [URL="http://www.php.net/include"]include[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]config.php[/COLOR][COLOR= #007700]);[/COLOR]
    
    [COLOR= #0000BB]$aantal[/COLOR][COLOR= #007700]=[/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]aantal[/COLOR][COLOR= #007700]];[/COLOR] 
    [COLOR= #0000BB]$prijsper[/COLOR][COLOR= #007700]=[/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]prijsper[/COLOR][COLOR= #007700]];[/COLOR]
    
    [COLOR= #0000BB]$prijstot[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$aantal[/COLOR] [COLOR= #007700]*[/COLOR] [COLOR= #0000BB]$prijsper[/COLOR][COLOR= #007700];[/COLOR]

   [COLOR= #0000BB]$query[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"UPDATE `winkelwagen` SET  `aantal` =  "[/COLOR][COLOR= #007700].[/COLOR][URL="http://www.php.net/mysql_real_escape_string"]mysql_real_escape_string[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$aantal[/COLOR][COLOR= #007700]).[/COLOR][COLOR= #DD0000]", `prijstot` =  "[/COLOR][COLOR= #007700].[/COLOR][URL="http://www.php.net/mysql_real_escape_string"]mysql_real_escape_string[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$prijstot[/COLOR][COLOR= #007700]).[/COLOR][COLOR= #DD0000]" WHERE  `winkelwagen`.`id` ="[/COLOR][COLOR= #007700].[/COLOR][URL="http://www.php.net/mysql_real_escape_string"]mysql_real_escape_string[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_GET[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]"id"[/COLOR][COLOR= #007700]]).[/COLOR][COLOR= #DD0000]";"[/COLOR][COLOR= #007700]);[/COLOR]
    
    [URL="http://www.php.net/if"]if[/URL][COLOR= #007700](![/COLOR][COLOR= #0000BB]$query[/COLOR][COLOR= #007700]) {[/COLOR]
    [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]Oeps, er is iets mis gegaan.[/COLOR][COLOR= #007700];
    }[/COLOR] [URL="http://www.php.net/else"]else[/URL] [COLOR= #007700]{[/COLOR]
    [URL="http://www.php.net/header"]header[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"location:winkelwagen.php"[/COLOR][COLOR= #007700]);
    }[/COLOR]
?>
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
PHP kent geen kommas daar, je moet in plaats daarvan punten gebruiken (de gewone Engelse notatie dus) of met str_replace zorgen dat je punten door kommas vervangt.
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Number_format() lijkt me beter bij de uitvoer..
0
Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
En als je veld int is kan hij ook geen kommas opslaan
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Gebruik dan float
0
Trans

Lid · Topicstarter

Berichten
387
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Veld is varchar.
Mischien kan ik voor de kommas een apart tabel maken.
Dus dat euros en centen apart worden gerekent.
0
Berichten
20.364
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Trans schreef:
Veld is varchar.
Mischien kan ik voor de kommas een apart tabel maken.
Dus dat euros en centen apart worden gerekent.
En als je je veld een decimal 13,2 maak
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Trans schreef:
Veld is varchar.
Mischien kan ik voor de kommas een apart tabel maken.
Dus dat euros en centen apart worden gerekent.

Schiet jezelf niet in je voet en gebruik FLOAT
0
Berichten
11.263
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Werk met punten.

En zet later je eindresultaat met str_replace van een punt naar een komma.

Zo zou ik het doen
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Sanderc schreef:
Werk met punten.
En zet later je eindresultaat met str_replace van een punt naar een komma.

Zo zou ik het doen

Dat heb je number_format voor. Je kan voor de input wel kommas naar punten replacen.
0
Trans

Lid · Topicstarter

Berichten
387
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Heb het al werkend gekregen.
Apart vaak voor euros en centen werken prima.
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Trans schreef:
Heb het al werkend gekregen.
Apart vaak voor euros en centen werken prima.

Ik hoop geen losse velden. Want dat wordt echt heel lastig rekenen, terwijl de oplossing vrij simpel is, met een speciaal FLOAT-veld.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren