j'comprends pas laaaaaaa..... (switch)

j'comprends pas laaaaaaa..... (switch) - PHP - Programmation

Marsh Posté le 31-08-2004 à 15:45:38    

Voila... un calcul de degressif en fonction des quantités :
 
voici le code :
 

Code :
  1. switch ($_SESSION['nb_ex'])
  2.  {
  3.  case $_SESSION['nb_ex']>=10  : $_SESSION['remise_reliures']=0.1; $_SESSION['remise_reliures_affiche']="(Remise 10%)"; break;
  4.  case $_SESSION['nb_ex']>=50  : $_SESSION['remise_reliures']=0.2; $_SESSION['remise_reliures_affiche']="(Remise 20%)"; break;
  5.  case $_SESSION['nb_ex']>=100  : $_SESSION['remise_reliures']=0.3; $_SESSION['remise_reliures_affiche']="(Remise 30%)"; break;
  6.  case $_SESSION['nb_ex']>=500  : $_SESSION['remise_reliures']=0.4; $_SESSION['remise_reliures_affiche']="(Remise 40%)"; break;
  7.  case $_SESSION['nb_ex']>=1000  : $_SESSION['remise_reliures']=0.5; $_SESSION['remise_reliures_affiche']="(Remise 50%)"; break;
  8.  default : $_SESSION['remise_reliures']=0; $_SESSION['remise_reliures_affiche']=""; break;
  9.  }


 
... le prob c que si $_SESSION['nb_ex']=85 ... il me repond "10%" !!! et ce à tous les coups tant quand c'est supérieur à 10 ... galère !!!

Reply

Marsh Posté le 31-08-2004 à 15:45:38   

Reply

Marsh Posté le 31-08-2004 à 15:47:30    

freed102 a écrit :

Voila... un calcul de degressif en fonction des quantités :
 
voici le code :
 

Code :
  1. switch ($_SESSION['nb_ex'])
  2.  {
  3.  case $_SESSION['nb_ex']>=10  : $_SESSION['remise_reliures']=0.1; $_SESSION['remise_reliures_affiche']="(Remise 10%)"; break;
  4.  case $_SESSION['nb_ex']>=50  : $_SESSION['remise_reliures']=0.2; $_SESSION['remise_reliures_affiche']="(Remise 20%)"; break;
  5.  case $_SESSION['nb_ex']>=100  : $_SESSION['remise_reliures']=0.3; $_SESSION['remise_reliures_affiche']="(Remise 30%)"; break;
  6.  case $_SESSION['nb_ex']>=500  : $_SESSION['remise_reliures']=0.4; $_SESSION['remise_reliures_affiche']="(Remise 40%)"; break;
  7.  case $_SESSION['nb_ex']>=1000  : $_SESSION['remise_reliures']=0.5; $_SESSION['remise_reliures_affiche']="(Remise 50%)"; break;
  8.  default : $_SESSION['remise_reliures']=0; $_SESSION['remise_reliures_affiche']=""; break;
  9.  }


 
... le prob c que si $_SESSION['nb_ex']=85 ... il me repond "10%" !!! et ce à tous les coups tant quand c'est supérieur à 10 ... galère !!!


 bah c'est ce que tu lui demandes...

Code :
  1. case $_SESSION['nb_ex']>=10  : $_SESSION['remise_reliures']=0.1; $_SESSION['remise_reliures_affiche']="(Remise 10%)"; break;


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 31-08-2004 à 15:48:50    

skeye a écrit :

bah c'est ce que tu lui demandes...

Code :
  1. case $_SESSION['nb_ex']>=10  : $_SESSION['remise_reliures']=0.1; $_SESSION['remise_reliures_affiche']="(Remise 10%)"; break;




 
bah oui mais c pas ce que je veux ! lol ! je veux que si c $_SESSION['nb_ex'}=85 il me renvoie "20%" !!!
 
... faut retirer le "break" ?

Reply

Marsh Posté le 31-08-2004 à 15:50:18    

freed102 a écrit :

bah oui mais c pas ce que je veux ! lol ! je veux que si c $_SESSION['nb_ex'}=85 il me renvoie "20%" !!!
 
... faut retirer le "break" ?


non, faut pas retirer le break...il faut spécifier le bon ordre pour tes case!
si tu commences comme tu l'as fait il rentre dans le premier et termine, c'est normal!


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 31-08-2004 à 15:53:18    

C'est normal.
>= ça renvoi true ou false.

Reply

Marsh Posté le 31-08-2004 à 15:55:39    

comme c dis au dessus, dans l'autre sens tes tests ^^

Reply

Marsh Posté le 31-08-2004 à 15:58:31    

Je ne vois pas l'intérêt du switch ici :heink: (ni même comment ça peu fonctionner)
Si c'est pour mettre des ">=" il vaut pas mieux des if ?


Message édité par antp le 31-08-2004 à 15:59:08

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 31-08-2004 à 16:02:50    

en bref, si tu veux faire des > ou >= alors il faut toujours mettre la plus haute valeur en premier et si tu veux faire des < ou <= il faut toujours mettre la valeur la plus basse en premier afin de bien garder tes intervals distincts... dans des "if" bien sur !
 
Cordialement,
Pgaz


Message édité par pgaz le 31-08-2004 à 16:06:27

---------------
... une maladie mortelle sexuellement transmissible
Reply

Marsh Posté le 31-08-2004 à 16:03:24    

Sebastien a écrit :

comme c dis au dessus, dans l'autre sens tes tests ^^

Oui mais non !
Il compare un bool à un int, ça peut pas marcher.
 
Il peut mettre un switch(TRUE) à la place de switch($_SESSION['nb_ex']) :/


Message édité par kalex le 31-08-2004 à 16:10:45
Reply

Marsh Posté le 31-08-2004 à 16:11:14    

Ouais en plus, de toute facon c mal cod" et puis voila !!
Se retire comme un prince :p

Reply

Marsh Posté le 31-08-2004 à 16:11:14   

Reply

Marsh Posté le 31-08-2004 à 16:31:38    

j'ai inversé l'ordre et ça marche...
ça me suffira pour ce cas là !
 

Code :
  1. //degressif finitions
  2.  if($_SESSION['tarifs_finitions']!="aucune" || $_SESSION['tarifs_finitions']!="agraffes" )
  3.  {
  4.   switch ($_SESSION['nb_ex'])
  5.   {
  6.   case $_SESSION['nb_ex']>=1000  : $_SESSION['remise_reliures']=0.5; $_SESSION['remise_reliures_affiche']="(Remise 50%)"; break;
  7.   case $_SESSION['nb_ex']>=500  : $_SESSION['remise_reliures']=0.6; $_SESSION['remise_reliures_affiche']="(Remise 40%)"; break;
  8.   case $_SESSION['nb_ex']>=100  : $_SESSION['remise_reliures']=0.7; $_SESSION['remise_reliures_affiche']="(Remise 30%)"; break;
  9.   case $_SESSION['nb_ex']>=50  : $_SESSION['remise_reliures']=0.8; $_SESSION['remise_reliures_affiche']="(Remise 20%)"; break;
  10.   case $_SESSION['nb_ex']>=10  : $_SESSION['remise_reliures']=0.9; $_SESSION['remise_reliures_affiche']="(Remise 10%)"; break;
  11.   default : $_SESSION['remise_reliures']=1; $_SESSION['remise_reliures_affiche']=""; break;
  12.   }
  13.  }
  14.  else
  15.  {
  16.  $_SESSION['remise_reliures']=1;
  17.  $_SESSION['remise_reliures_affiche']="";
  18.  }


Message édité par freed102 le 31-08-2004 à 16:32:34
Reply

Marsh Posté le 31-08-2004 à 16:33:31    

kalex a écrit :

Oui mais non !
Il compare un bool à un int, ça peut pas marcher.
 
Il peut mettre un switch(TRUE) à la place de switch($_SESSION['nb_ex']) :/


 
je connais pas cette technique... c interessant

Reply

Marsh Posté le 31-08-2004 à 16:43:21    

Il suffi de savoir que les opérateurs de comparaison (==, !=, <= , >, etc.) renvoient true ou false.
1 == 1 /* vaut true */
1 != 1 /* vaut false */
4 >= 3 /* vaut true */


Message édité par kalex le 31-08-2004 à 16:43:49
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed