Quelqu'un peut m'expliquer la fonction switch ? [ PHP ] - Programmation
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]
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
elseif ($cat=='storiesdb' && $page=='2' {include('stories/dragonball_2.php';}
tu sais pourquoi ???
Marsh Posté le 05-11-2001 à 22:36:36
Désolé....
Je connais le C/C++
Et un peu le PHP (1 mois 1/2 de cours )
Mais C une bonne question
Euh.... else if C en 2 mots (enfin en C ....)
PS : Les compilateurs C retransforment les switch en bloc if
[edtdd]--Message édité par [SDF]Poire--[/edtdd]
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... Car le PHP...)
[edtdd]--Message édité par [SDF]Poire--[/edtdd]
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]
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..
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.
Marsh Posté le 06-11-2001 à 11:19:43
désolé pour les erreurs maissi vous saviez mieux fallait expliquer !
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.
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... La prochaine fois je réagirai plus vite
gizmo> et la facilité de lecture aussi, qui découle d'un code plus propre
Marsh Posté le 06-11-2001 à 20:18:22
merci a tous mais là je suis complètement perdu
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
<?
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ààà
[edtdd]--Message édité par Negueu--[/edtdd]
Marsh Posté le 06-11-2001 à 21:07:04
Tu nous demandes avec switch, et puis tu l'utilises même pas ??
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);
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
merci pour ton code
je vais le copier et essayer de travailler dessus
encore merci
Marsh Posté le 05-11-2001 à 22:03:25
bon il parait que ca c(est nul et que c'est pas sécurisé
<?
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à
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 qqun peut m'expliquer ?