je me suis inspiré de ce post pour appliquer ce qui suit :
http://www.developpez.net/forums/sho...ndition+switch
Je n'ai laissé que les lignes utiles dans la mesures ou la rupture des cases 'p' est à ce niveau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 // application du tarif correspondant a la tranche de poids switch(true) { //....// case ($sum_Poids <= ($row_2->p19p)) : ($tarif =$row_2->t9); break; case ($sum_Poids <= ($row_2->p19)) : ($tarif = $row_2->t9p); break; case (($row_2->p20p < $row_2->p21p) AND ($sum_Poids <= ($row_2->p20p))) : ($tarif= $row_2->t10); break; case (($row_2->p20p < $row_2->p21p) AND ($sum_Poids <= ($row_2->p20))) : ($tarif= $row_2->t10p); break; case (($row_2->p20p == $row_2->p21p) AND ($sum_Poids <= ($row_2->p20))) : ($tarif= $row_2->t10); break; case ($sum_Poids <= ($row_2->p21p)) : ($tarif = $row_2->t11); break; case ($sum_Poids <= ($row_2->p21)) : ($tarif = $row_2->t11p); break; case ($sum_Poids <= ($row_2->p22p)) : ($tarif = $row_2->t12); break; case ($sum_Poids <= ($row_2->p22)) : ($tarif = $row_2->t12p); break; } /* Mode de calcul des prix */ if($sum_Poids <= $forfait) {$cout_jour=$tarif;} elseif($tarif==$row_2->t6p) {$cout_jour=$tarif;} elseif($tarif==$row_2->t7p) {$cout_jour=$tarif;} elseif($tarif==$row_2->t8p) {$cout_jour=$tarif;} elseif($tarif==$row_2->t9p) {$cout_jour=$tarif;} elseif($tarif==$row_2->t10p) {$cout_jour=$tarif;} elseif($tarif==$row_2->t11p) {$cout_jour=$tarif;} elseif($tarif==$row_2->t12p) {$cout_jour=$tarif;} elseif($tarif==$row_2->t13p) {$cout_jour=$tarif;} elseif($tarif==$row_2->t14p) {$cout_jour=$tarif;} else($cout_jour = (($sum_Poids / 100) * $tarif));
Les lignes concernant p19 fonctionnent parfaitement, le soucis est que ce code,
même s'il ne génére pas d'erreur, n'applique pas l'else du dernier niveau utile au p20 :
alors même que toutes les conditions, à tous les niveaux sont justes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 else($cout_jour = (($sum_Poids / 100) * $tarif));
(vérifiés en requete directe sur la base pour tous les éléments)
Je dois 'rater' quelque chose mais je ne vois pas quoi est ce donc ?
Tout reprendre avec des if/else ? dommage j'aime bien les switch
merci de vos avis
Partager