[ PHP ] Quelqu'un peut m'expliquer la fonction switch ?

Quelqu'un peut m'expliquer la fonction switch ? [ PHP ] - Programmation

Marsh Posté le 05-11-2001 à 22:03:25    

bon il parait que ca c(est nul et que c'est pas sécurisé :heink:  
 
<?
if ($truc=='machin';) {include('machin.php';);}
else {include('bidule.php';);}
?>

 
après des recherches ont m'as proposé de faire un "switch" avec ce code là :D  
 
switch($cat)
{
  case 'news': include(..);break;
  case 'storiedb' :  
switch($page)  
{
case 2 : include(..) ; break;
case 3 : include(..); break;
default : include(page1);break
}
 ...
}

 
j'ai rien compris :cry: qqun peut m'expliquer ? ;)

Reply

Marsh Posté le 05-11-2001 à 22:03:25   

Reply

Marsh Posté le 05-11-2001 à 22:19:12    

ex :
switch($page)  
{  
case 2 : include(..) ; break;  
case 3 : include(..); break;  
default : include(page1);break  
}

 
équivaut à  
if ($page == 2) {include(..);}
else if ($page == 3) {include(..);}
else {include(page1);}

 
Euh....... je vois pas pq ça serait + sécurisé mais bon....

 

[edtdd]--Message édité par [SDF]Poire--[/edtdd]


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 05-11-2001 à 22:24:32    

ben on m'as dis que le switch c'était mieux :??:  
 
puisque t'a l'air de t'y connaitre, comment fo que je fasse pour que j'ai une page que je peux appeler par index.php?cat=storiesdb&page=2 ????
 
j'ai essayé ca mais ca marche pas :cry:  
 
elseif ($cat=='storiesdb' && $page=='2';) {include('stories/dragonball_2.php';);}
 
tu sais pourquoi ???

Reply

Marsh Posté le 05-11-2001 à 22:35:01    

:bounce:

Reply

Marsh Posté le 05-11-2001 à 22:36:36    

Désolé.... :sarcastic:  
Je connais le C/C++ :D  
Et un peu le PHP (1 mois 1/2 de cours  :crazy: )
Mais C une bonne question  :D  
Euh.... else if C en 2 mots :) (enfin en C ....)
PS : Les compilateurs C retransforment les switch en bloc if  :D

 

[edtdd]--Message édité par [SDF]Poire--[/edtdd]


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 05-11-2001 à 22:40:01    

En + include ça inclue une page... ça la lance pas.....
 
 
 
(Euh.... Vous le dite si je dit une connerie... :D Car le PHP...)

 

[edtdd]--Message édité par [SDF]Poire--[/edtdd]


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 05-11-2001 à 22:46:32    

en fait le switch est une boucle qui prend une variable en paramètres (en algo de base on parle de cas).
 
donc ta boucle est découpée en cas :
 
switch ($variable) {
  case "oui"; // cas "oui" cette partie (jusqu'au break qui marque la fin) sera exécuté si $variable vaut oui
   
    instruction 1;
    instruction 2
  break;
 
  case "non";  // ici si $variable vaut "non"
  instruction 1;
  instruction 2;
  break;
 
  default:  // ici si $variable n'a aucune valeur
  instruction 1
  ...
   
}
 pigé ?

 

[edtdd]--Message édité par Sh@rdar--[/edtdd]


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 05-11-2001 à 22:54:39    

Sh@rdar a écrit a écrit :

switch ($variable) {
  case "oui"; // cas "oui" cette partie (jusqu'au break qui marque la fin) sera exécuté si $variable vaut oui
   
    instruction 1;
    instruction 2
  break;
 
  case "non";  // ici si $variable vaut "non"
  instruction 1;
  instruction 2;
  break;
 
  default:  // ici si $variable n'a aucune valeur
  instruction 1
  ...
   
}




 
les instructions du bloc "default" sont exécutées si $variable n'est pas un des cas traités (ici ni 'oui' ni 'non';) pas forcément si elle n'est pas initialisée.
 
c juste une précision.. :ange:


---------------
1km = 1024m
Reply

Marsh Posté le 05-11-2001 à 23:40:23    

Sh@rdar a écrit a écrit :

en fait le switch est une boucle qui prend une variable en paramètres (en algo de base on parle de cas).
 




 
c pas une boucle, c'est une conditionnelle.
il ne passe qu'une fois dedans, et exécute le code qui correspond à la variable testée.  il sort du test dès qu'il trouve un "break", sinon, il continue à exécuter le code qui suit.

Reply

Marsh Posté le 06-11-2001 à 11:19:43    

désolé pour les erreurs  :D  maissi vous saviez mieux fallait expliquer !  ;)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 06-11-2001 à 11:19:43   

Reply

Marsh Posté le 06-11-2001 à 11:45:09    

autre précision, si l'on ne met pas de break; les instruction suivantes sont exécutée, cela permet d'exécuter un code completement, partiellement, ou un autre code en fonction de la variable.
 
Le grand intérêt du switch, n'est pas son optimisation en terme de performance, mais sa capacité a facilement suivre les futures ajouts dans le code.

Reply

Marsh Posté le 06-11-2001 à 12:27:23    

Sh@rdar> désolé pour la correction, mais bon tu avais l'air très pointilleux sur les termes alors... :D La prochaine fois je réagirai plus vite ;)
 
gizmo> et la facilité de lecture aussi, qui découle d'un code plus propre ;)

Reply

Marsh Posté le 06-11-2001 à 20:18:22    

merci a tous mais là je suis complètement perdu :D  
 
vous voulez pas m'expliquer comment je fais pour avoir index.php?cat=storiesdb&page=2   ???
 
ca marche impec quand y'a que index.php?cat=storiesdb mais pour page=2 ca fait rien (il me recharge la page 1 )
 
avec ca, ca marche:
 
<?
if ($cat=='news';) {include('news.php';);}
elseif ($cat=='archives';) {include('archives.php';);}
elseif ($cat=='storiesdb';) {include('stories/dragonball.php';);}
else {include('news.php';);}
?>

 
mais quand je veux rajouter une autre ligne dedans, caaa maaaaaarche paaaas :cry:  :cry:  
 
<?
if ($cat=='news';) {include('news.php';);}
elseif ($cat=='archives';) {include('archives.php';);}
elseif ($cat=='storiesdb';) {include('stories/dragonball.php';);}
elseif ($cat=='storiesdb' && $page=='2';) {include('stories/dragonball_2.php';);}
else {include('news.php';);}
?>

 
si qqun voit l'erreur, ca serait sympa qu'il me la dise :)  
 
si vous voulez me contacter par MSN ou mail: Ze_Gang@dbzgeneration.com
 
voilààà
 :hello:

 

[edtdd]--Message édité par Negueu--[/edtdd]

Reply

Marsh Posté le 06-11-2001 à 21:07:04    

Tu nous demandes avec switch, et puis tu l'utilises même pas ??  :heink:  
 
switch ($cat){
  case("news" ): $page_principale= "news.php"; break;
  case("archives" ): $page_principale= "archives.php"; break;
  case("storiesdb" ): $page_principale= "stories/dragonball.php"; break;
  default: $page_principale= "news.php"; break;
}
include($page_principale);
 
bon alors pour ta page 2,  
- soit tu mets le code dans ta page qui correspond, stories/dragonball.php (dans ce cas-ci). (tu fais un switch($page)... et tu refais un include() )
- soit tu le tapes dans ce switch ci (ce qui est pas très propre.)
switch ($cat){
  case "news": $page_principale= "news.php"; break;
  case "archives": $page_principale= "archives.php"; break;
  case "storiesdb":  
   switch($page){
     case "1": $page_principale= "stories/dragonball.php";
     case "2": $page_principale= "stories/dragonball_2.php";
     default: $page_principale= "stories/dragonball.php";
   }
   break;
  default: $page_principale= "news.php"; break;
}
include($page_principale);

Reply

Marsh Posté le 06-11-2001 à 22:46:54    

ok merci ethernal !! :)  
 
ben c'est a dire que je suis sur le PHP depuis pas longtemps ;) le switch c'est assez balaise je trouve :D  
 
merci pour ton code
je vais le copier et essayer de travailler dessus :)  
 
encore merci
 :hello:

Reply

Sujets relatifs:

Leave a Replay

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