Ik heb een aantal selectievelden waarbij mensen aantallen kunnen selecteren.
Na het posten worden deze aantallen opgeteld en in $totaal gezet.
Nu geldt er een 2e halve prijs actie en wil ik het volgende doen:
Product kost 6 euro
Iemand koopt 1 product: 6 euro
Iemand koopt 2 producten: 9 euro
Dat doe ik zo:
if($_GET['aktiemechanisme'] == 2) {
if (0==($aantal%2))
{
$aantal = $aantal *0.75;
}
Dat werkt, maar als iemand er nu 3 koopt, krijg je: 18 euro
Terwijl ik dan graag zou willen zien dat hij zegt: 15 euro (dus hier wordt 1x 2e halve prijs toegepast, de 3e is het hele bedrag boven op die 9 euro.)
Nu telt het script bij 3 stuks 3x de volle prijs en bij de 4e pas weer de aktie toe te passen.
je moet natuurlijk wel de korting op het goedkoopste artikel doen hé.
Antwoord op je probleem;
<?php
$goedkoopsteprijs = 10.15; // @todo; mysql MIN() of de php variant: http://nl1.php.net/min
$aanbiedingsprijs = number_format($goedkoopsteprijs / 2, 2); // ervoor zorgen dat 10.15 / 2 geen 5.075 wordt maar netjes 5.08
?>
Volgens mij is dat niet precies wat Patrick wil weten. Hij wil weten wat de formule is die weergeeft dat ieder tweede (zelfde) artikel de helft kost. Die formule is:
(Ik hoop niet dat iemand gaat zeuren over dat de strings gesplitst moeten worden, daar gaat het niet om in dit voorbeeld. Bovendien doe ik het precies zoals php.net het beschrijft.)
Met alle respect ben ik het niet met je eens, Ger. Probeer jouw formule maar eens in mijn voorbeeld op te nemen (heb ik gedaan): hij geeft gewoon niet de juiste resultaten. Mijn formule wel.
Aantal Aantal hele prijs Aantal halve prijs Totaal prijs Ger
1 1 0 6 6
2 1 1 9 3
3 2 1 15 9
4 2 2 18 6
5 3 2 24 12
6 3 3 27 9
(Sorry voor de knullige layout, maar de rechtse kolom is het resultaat van jouw formule. die daarvoor is de mijne.)