je me suis inspiré de ce post pour appliquer ce qui suit :

http://www.developpez.net/forums/sho...ndition+switch
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));
Je n'ai laissé que les lignes utiles dans la mesures ou la rupture des cases 'p' est à ce niveau.
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
else($cout_jour = (($sum_Poids / 100)  *  $tarif));
alors même que toutes les conditions, à tous les niveaux sont justes.
(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