Boucle while qui me déserpère...

Résolu
ajey Messages postés 16 Date d'inscription mercredi 22 septembre 2004 Statut Membre Dernière intervention 20 avril 2006 - 20 avril 2006 à 12:55
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Derniè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;
}


?>

Help please...

4 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
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...
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
20 avril 2006 à 13:44
Hello,

if ($bons = 0) // le client ne possède aucun bons d'achat
Pas bon!
if ($bons === 0) // le client ne possède aucun bons d'achat
Bon!

Là tu assignais 0 à $bons, tout le temps...bref, $bons valait toujours 0.
0
ajey Messages postés 16 Date d'inscription mercredi 22 septembre 2004 Statut Membre Dernière intervention 20 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 !!!

...
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
20 avril 2006 à 14:15
Donne l'algo que tu veux, en français, parce que ton code me semble bien compliqué pour ce qu'il fait...
0
Rejoignez-nous