Ik zit even met een klein mysterie.. Voor de berekening van een Totaalprijs (aantal x prijskeuze) waarbij ik decimalen met een . invoer en dus niet met een , (komma) en waarbij ik het aantal en prijskeuze post en vervolgens vermenigvuldig met: sprintf("%01.2f",) word de output verkeerd afgerond: bedragen achter de . worden niet meegerekend.
voorbeeld: (form input)
<?php
$fields_3 = array("Aantal1" => "1",
"Aantal2" => "1",
"Aantal3" => "3",
"Aantal4" => "3"
);
foreach($fields_3 as $field => $value)
{
$type = "text";
$placeholder3= "Aantal";
echo "<div id='field'><input id='$field' name='$field' type='$type' value='".@$$field."' size='3' maxlength='10' placeholder='$placeholder3' /> <b>x</b> </div>"; }
$fields_5 = array("Prijskeuze1" => "2.50",
"Prijskeuze2" => "3.00",
"Prijskeuze3" => "1.25",
"Prijskeuze4" => "2.50"
);
foreach($fields_5 as $field => $value)
{
$type = "text";
$placeholder4= "Prijs p/stuk";
echo "<div id='field'><input id='$field' name='$field' type='$type' value='".@$$field."' size='5' maxlength='10' placeholder='$placeholder4' /></div>"; }
?>
vervolgens gaat deze input doormiddel van POST naar invoer.php:
<?
require_once '../../misc/log_config.inc.php';
$Id= $_POST['Id'];
$Aantal1 = $_POST['Aantal1'];
$Aantal2 = $_POST['Aantal2'];
$Aantal3 = $_POST['Aantal3'];
$Aantal4 = $_POST['Aantal4'];
$Prijskeuze1 = $_POST['Prijskeuze1'];
$Prijskeuze2 = $_POST['Prijskeuze2'];
$Prijskeuze3 = $_POST['Prijskeuze3'];
$Prijskeuze4 = $_POST['Prijskeuze4'];
$Totaalprijs1= sprintf("%01.2f",$Aantal1*$Prijskeuze1);
$Totaalprijs2= sprintf("%01.2f",$Aantal2*$Prijskeuze2);
$Totaalprijs3= sprintf("%01.2f",$Aantal3*$Prijskeuze3);
$Totaalprijs4= sprintf("%01.2f",$Aantal4*$Prijskeuze4);
$sUpdatequery = "UPDATE Bestelling SET
Aantal1='$Aantal1',Aantal2='$Aantal2',Aantal3='$Aantal3',Aantal4='$Aantal4',
Prijskeuze1='$Prijskeuze1',Prijskeuze2='$Prijskeuze2',Prijskeuze3='$Prijskeuze3',
rijskeuze4='$Prijskeuze4',
Totaalprijs1='$Totaalprijs1',Totaalprijs2='$Totaalprijs2',Totaalprijs3='$Totaalprijs3',
Totaalprijs4='$Totaalprijs4',
WHERE Id='$Id'";
$rDatabaseverbinding = mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD) or die(mysql_error());
mysql_select_db(MYSQL_DATABASENAAM) or die(mysql_error());
$rRecordset = mysql_query($sUpdatequery) or die(mysql_error());
echo "<center><strong>De Bestelling is opgeslagen!</strong>,</center></br></br>\n";
?>
nu zou die dus als resultaat moeten teruggeven en opslaan:
$Totaalprijs1 = "2.50" //1x 2.50
$Totaalprijs2 = "3.00" // 1x 3.00
$Totaalprijs3 = "3.75" // 3 x 1.25
$Totaalprijs4 = "7.50" // 3 x 2.50
Maar nu krijg ik:
$Totaalprijs1 = "2,50"
$Totaalprijs2 = "3,00"
$Totaalprijs3 = "3,75"
$Totaalprijs4 = "7,50"
Vervolg berekening(en) gaan vervolgens niet goed in afronding omdat de input . nu ineens een , is geworden.
Het lijkt erop dat het script van de input . een komma maakt als decimaal en daardoor niet goed afrond. Mijn vraag is hoe dit mogelijk is en wat ik wellicht fout doe. De invoer gaat correct met een . als decimaal. Voor een juiste berekening moet dit ook een . blijven.
Ik vermoed dat er ergens in het dynamische input form iets niet goed gaat. Als ik het input form in een niet dynamische form uitvoer, gaat het wel goed.
Hopelijk heb ik het duidelijk uitgelegd wat het probleem is en kan iemand mij helpen met een oplossing