Hallo,
ik ben bezig met een geldsommen script.

Ik krijg een aantal variabelen door via een html formulier zoals:

maximaal bedrag van de producten
prijs afronden op: 001, 002, 005, 010, 020, 050, 100 en 200 cent
betalen met: 001, 002, 005, 010, 020, 050, 100, en 200 cent

Wat is mijn bedoeling:

stel de instelling is:
maximaal bedrag: 2 euro
afronden op: 005 cent
betalen met: 020, 050, 100 en 200 cent.

ik maak een random bedrag aan voor een product, bijvoorbeeld een tandenborstel voor 1,25 euro.
Ik loop nu door de array van betalen met en vergelijk als het random bedrag lager is dan het te betalen bedrag.
De eerste in dit geval is dus de 2 euro munt en die wordt dan als image geplaatst, tot zover gaat het goed.

Maar wat nu als ik wil betalen met 1 euro en 50 cent, of met 1 euro en 1 van 20 cent en 1 van 10 cent
Ik ben al een poosje aan het denken hoe ik dat kan fixen.

Ik wil dan dus de benodigde images van de 1 euro, 20 cent en de 10 cent laten zien.

Iemand enig idee?

Nou snap ik je niet meer.
Je wilde toch wat je retour krijgt.
Oeps mijn fout, moet je na het veranderen wel je bestand uploaden :p
Maar is nog niet wat ik nodig heb.

In jou script krijg je om te betalen altijd 1 munt (dat heb ik nu ook) zie afbeelding http://www.juf-milou.nl/geldsommen.jpg , dit zouden meerdere moeten worden.
Wat je terug krijgt van het betaalde bedrag moet uitgerekend worden door een leerling, dus dat hoeft niet terug te komen in het script.

Moet ik even over nadenken.
Want 30 cent betaal je bv. met 1 euro maar niet met 2 x 50 cent. ;-)

Ik ga nu eerst even wat eten.
Inderdaad en 2x 0.20 of 1 x 1.00 of 1 x 0.50 zou wel kunnen, daar zat ik dus ook over te peinzen hoe dat op te lossen. Het is de bedoeling dat het papiergeld ook nog erbij komt maar ik denk als het muntgeld werkt dat ik het papiergeld er ook wel bij kan inbouwen.

Gelukkig is nu wel duidelijk wat de bedoeling is.

Wel grappig, zie dat je uit ZH komt daar ben ik morgen ook weer :-)
Oh dit heeft niks met het script te maken haha

Eet smakelijk.
Zoiets misschien?
<?php
# Dit array kun je aanvullen als je wilt
$EuroMunten = array(1,2,5,10,20,50,100,200);
$IkBetaalMet = array_fill(0,count($EuroMunten),0);

$TeBetalen = rand(1,end($EuroMunten));
do
{ $IkBetaal = $EuroMunten[rand(0,count($EuroMunten)-1)];
} while($IkBetaal < $TeBetalen);

echo 'Te betalen €'.number_format($TeBetalen/100, 2, '.', '').'<br/>';
echo 'Ik betaal €'.number_format($IkBetaal/100, 2, '.', '').'<br/>';
echo '<br/>';

$IkBetaalMet = array_fill(0,count($EuroMunten),0);
$RekenHulp = 0;
$teller = 0;
do
{ $key = rand(0,count($EuroMunten)-1);
$munt = $EuroMunten[$key];
if(($munt + $RekenHulp) <= $IkBetaal and $munt > ($IkBetaal - $TeBetalen))
{ $RekenHulp += $munt;
$IkBetaalMet[$key]++;
}
$teller++;
if($teller == 1000)
{ $IkBetaalMet = array_fill(0,count($EuroMunten),0);
$RekenHulp = 0;
$teller = 0;
}
} while($IkBetaal != $RekenHulp);
foreach($IkBetaalMet as $key => $value)
{ if($IkBetaalMet[$key] > 0) echo $IkBetaalMet[$key].' x €'.number_format($EuroMunten[$key]/100, 2, '.', '').' = €'.number_format($IkBetaalMet[$key]*$EuroMunten[$key]/100, 2, '.', '').'<br/>';
}
echo '<br/>';
?>
Even snel gekeken, en lijkt goed te zijn.
Ik zal het morgen of overmorgen eens in mijn script verwerken en kijken hoe het gaat.

Dank je voor je hulp :)
Vandaag had ik weer tijd om hier mee verder te gaan.
Het script werkt echt goed alleen....

Is het mogelijk om het script zo aan te passen op een totaal aantal muntjes of briefgeld wat je kan gebruiken?
Dus bijvoorbeeld:

maximaal 4 muntjes
maximaal 1 briefje + maximaal 2 muntjes
maximaal 2 briefjes

Zou je hier nog eens naar willen kijken, want ik was al aan het puzzelen maar kom er gewoon niet uit.

<?php
$maxMunten = 3;
$maxBiljetten = 1;
# Dit array kun je aanvullen als je wilt
$EuroMunten = array(1,2,5,10,20,50,100,200,500,1000);
$IkBetaalMet = array_fill(0,count($EuroMunten),0);
$TeBetalen = rand(1,end($EuroMunten));
do
{ $IkBetaal = $EuroMunten[rand(0,count($EuroMunten)-1)];
} while($IkBetaal < $TeBetalen);
if($maxMunten == 0)
{ $maxMunten = 1;
}
if($IkBetaal > 200 and $maxBiljetten == 0)
{ $maxBiljetten = 1;
}

echo 'Te betalen €'.number_format($TeBetalen/100, 2, '.', '').'<br/>';
echo 'Ik betaal €'.number_format($IkBetaal/100, 2, '.', '').'<br/>';
echo '<br/>';

$IkBetaalMet = array_fill(0,count($EuroMunten),0);
$RekenHulp = 0;
$teller = 0;
do
{ $key = rand(0,count($EuroMunten)-1);
$munt = $EuroMunten[$key];
if(($munt + $RekenHulp) <= $IkBetaal and $munt > ($IkBetaal - $TeBetalen))
{ $RekenHulp += $munt;
$IkBetaalMet[$key]++;
}
$teller++;
if($teller == 1000 or array_sum(array_slice($IkBetaalMet,0,8)) > $maxMunten or array_sum(array_slice($IkBetaalMet,8)) > $maxBiljetten)
{ $IkBetaalMet = array_fill(0,count($EuroMunten),0);
$RekenHulp = 0;
$teller = 0;
}
} while($IkBetaal != $RekenHulp);
foreach($IkBetaalMet as $key => $value)
{ if($IkBetaalMet[$key] > 0) echo $IkBetaalMet[$key].' x €'.number_format($EuroMunten[$key]/100, 2, '.', '').' = €'.number_format($IkBetaalMet[$key]*$EuroMunten[$key]/100, 2, '.', '').'<br/>';
}
echo '<br/>';
?>
$maxMunten en $maxBiljetten kan je zelf aanpassen.
Geweldig van je snelle reactie, dank je ik ga dit van de week eens proberen in te bouwen en dan laat ik weten hoe het allemaal werkt :)

Reageren