Geachte dames en heren,

Ik ben bezig met het importeren van artikelen in mijn webwinkeltje.
Nu is het zo dat ik de artikelen middels een xml pagina in mijn database kan zetten, so far so good..

Het volgende probleem doet zich voor...

In deze xml pagina staan mijn inkoopprijzen en die wil ik voordat ik het wegschrijf in de database gaan verhogen met een percentage.

normaal als je bv € 6.90 x 25% doet is dat hetzelfde als vermenigvuldigen met 1.25. ( € 8.63 )

ik gebruik nu het volgende:
<?

foreach($xml->product as $item) {

$inkoopprijs= $item->prijs_ex;
$verkoopprijs=($item->prijs_ex*1.25);


echo "Inkoopprijs $item->prijs_ex </br>";
echo "verkoopprijs $verkoopprijs </br>";

}

?>

de uitkomst bij 6.90is nu vreemd genoeg 7.5

Wat gaat er mis?
Je kunt een [php]var_dump[/php] doen op die $item->prijs_ex om te kijken of de var wel echt 6.9 is en toevallig niet gewoon 6.
Als ik $item->prijs_ex echo, wordt 6.9 weergegeven...
Lijkt me wel een integer interpretatie van de 6.9, aangezien 6 * 1.25 = 7.5
probeer eens:
$verkoopprijs=$inkoopprijs*1.25;
Waarschijnlijk staat er in je xml geen 6.9 of 6.90 zoals jou post ons doet geloven, maar staat er 6,9

Zie ook dit test scriptje:

<?php
$foo = array(6.9,'6,9');
foreach($foo as $bar) {
	echo $bar . ' => ' . ($bar*1.25).'<br>';
}
Je ziet het duidelijker met dit script:

<?php

$foo =  array('6,9', '6.9', 6.9);


foreach ($foo as $bar) {
	echo $bar . ' ==>' . (double) $bar . ' <br> ';
}

?>


Output:

6,9 ==> 6
6.9 ==> 6.9
6.9 ==> 6.9 
<?php

foreach($xml->product as $item)
{
$inkoopprijs = (float) $item->prijs_ex;
$verkoopprijs = ((float) $item->prijs_ex) * 1.25;

echo 'Inkoopprijs ' . $inkoopprijs . '<br />' . PHP_EOL;
echo 'Verkoopprijs ' . $verkoopprijs . '<br />' . PHP_EOL;
}

?>
Danny schreef op 21.08.2008 21:59
Je ziet het duidelijker met dit script:

Ikke zie het duidelijker met Boaz script, wat ie zegt, daar doelde ik ook op met me var_dump.
Jonathan schreef op 21.08.2008 22:05
<?php

foreach($xml->product as $item)
{
$inkoopprijs = (int) $item->prijs_ex;
$verkoopprijs = ((int) $item->prijs_ex) * 1.25;

echo 'Inkoopprijs ' . $inkoopprijs . '<br />' . PHP_EOL;
echo 'Verkoopprijs ' . $verkoopprijs . '<br />' . PHP_EOL;
}

?>


Dat gaat niet werken, aangezien 6.9 geen int is maar een double/float.
Danny schreef op 21.08.2008 22:07
[quote='Jonathan schreef op 21.08.2008 22:05'][..]


Dat gaat niet werken, aangezien 6.9 geen int is maar een double/float.[/quote]
Moest natuurlijk float zijn:
<?php

foreach($xml->product as $item)
{
$inkoopprijs = (float) $item->prijs_ex;
$verkoopprijs = ((float) $item->prijs_ex) * 1.25;

echo 'Inkoopprijs ' . $inkoopprijs . '<br />' . PHP_EOL;
echo 'Verkoopprijs ' . $verkoopprijs . '<br />' . PHP_EOL;
}

?>

Reageren