ajey
Messages postés16Date d'inscriptionmercredi 22 septembre 2004StatutMembreDernière intervention20 avril 2006
-
20 avril 2006 à 12:55
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 2010
-
20 avril 2006 à 14:25
Bonjour à tous voilà le code d'une fonction qui me semblais simple au départ je ne truove pas l'erreur.
Le but et d'incrémenter réduction selon le montant de $total. :
ma fonction est appelée comme çà pour le test getreduction(55,3);
<?
function getreduction($total,$bons)
{
if ($bons = 0) // le client ne possède aucun bons d'achat
{
$reduction = "null";
}
else //le client possède au moins un bon d'achat
{
if ($total<=30)
{
$reduction = 8;
}
if (($total>30) && ($total<=60))
{
$reduction = 0; // on initialise $reduction...
while ($reduction <= 16)
{
if ($bons>0)
{
$reduction = $reduction + 8;
$bons --;
}
}
}
if (($total>60) && ($total<=90)) // variante qui ne marche pas non plus
{
$reduction = 0;
while (($bons > 0) && ($reduction <= 24))
{
$reduction = $reduction + 8;
$bons --;
}
}
}
echo $reduction;
}
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 20 avril 2006 à 14:25
Ceci dit, 55,3, c'est normal que tu aies 24.
Je pars de 0...
tant que c'est inférieur OU EGAL à 16, je rentre dans ma boucle.
Si $bons > 0, je fais :réductions +8 donc $reduction 8.
$bons -- donc $bons = 2.
8 <= 16, oui donc :
2 > 0 => oui donc :$reduction +8> $reduction = 16
$bons -- => $bons = 1
16 <= 16 OUI!!!! DONC :
1 > 0 OUI!!!! DONC :$reduction +8> $reduction = 24
$bons -- => $bons = 0.24 <16 NON. je sors...et j'affirme que $reduction 24, à raison...
ajey
Messages postés16Date d'inscriptionmercredi 22 septembre 2004StatutMembreDernière intervention20 avril 2006 20 avril 2006 à 13:56
Merci énormément je ne savais pas que çà existait un triple "=" !
Sauf qu'il m'execute toujours un tour de boucle supplémentaire par exemple pour
getreduction(55,3) => 24 alors que la condition du while et quand même $reduction <= 16 !!!