[PHP]Prob de serveur local avec les switch($)

jul0891
Invité n'ayant pas de compte PHPfrance

14 mars 2006, 20:01

Bonjour à tous,

Je rencontre un probleme etrange en ce moment avec mon serveur php (local), chaque fois qu'il y a un switch dans un code, la page s'affiche juste avec la partie "default".
Exemple:
-------------------------------------------
<? 
switch ($test) { 
case 1: 
echo "test1"; 
break; 
case 2: 
echo "test2"; 
break; 

default: 
echo "Salut"; 
break; 
} 
?> 
<HTML> 
<BODY> 
<br> 
<a href=index.php?test=1>test 1</a> 
<br> 
<a href=index.php?test=2>test 2</a> 
</BODY> 
</HTML>

---------------------------------------------------

Sur mon serveur local, j'ai toujours le "Salut" qui s'affiche, qu'elle que soit le lien sr lequel je clic; par contre une fois sur mon hebergeur, plus de problemes...

Quelqu'un a une idée avant que je saute par la fenetre??? :( :( :(

merci.

Mammouth du PHP | 684 Messages

14 mars 2006, 20:19

Salut.

Rajoute ceci au début de ton script :
<?php
if (isset($_GET['test'])) {
   $test = $_GET['test'];
  //ICI tu met ton switch case.
}
else {
    echo 'JE NE RECOIT PAS MON PARAMETRE.<br />';
}
?>
Le problème (si on peut appeler sa un problème) c'est que ton hébergeur doit utiliser le php.ini avec l'information register_global a ON. C'est plutôt déprécier maintenant par les personnes de PHP.

Je t'invite à lire la documentation sur ce register_global pour en savoir plus.
Zigz4g

jul0891
Invité n'ayant pas de compte PHPfrance

14 mars 2006, 20:32

GENIAL !!

Merci bcp, ca fonctionne pas completement mais y'a deja plus d'evolution que depuis toute mon apresmidi !!

Effectivement, j'utilisais un register_global sur ON jusqu'a la derniere installation du serveur ou j'ai decidé de le laisser sur off... je ne pensais pas que cela pouvais venir de là !

Par contre avec le petit bout de code que tu m'a donné, forcement a cause de la structure du if / else, je ne retrouve jamais mon "Salut" contenu dans le default, puisque la boucle passe a else car elle n'a pas recu la variable $test...

Comment faire pour que le switch reagisse normalement a ca ?

Merci !

Mammouth du PHP | 1967 Messages

14 mars 2006, 23:30

<?php 
if (isset($_GET['test'])) { 
   $test = $_GET['test']; 
  //ICI tu met ton switch case. 
} 
else { 
    $test = ""; //donne une valeur qui n'est pas repris dans tes différent cas du switch et tu aura ta valeur par défaut
} 
?> 
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube