Case: switch php souci

Résolu/Fermé
Noel-barbu Messages postés 258 Date d'inscription mercredi 5 septembre 2012 Statut Membre Dernière intervention 16 janvier 2018 - Modifié par Noel-barbu le 18/06/2014 à 19:24
Noel-barbu Messages postés 258 Date d'inscription mercredi 5 septembre 2012 Statut Membre Dernière intervention 16 janvier 2018 - 18 juin 2014 à 19:37
Bonjour,

Alors voilà je rencontre un petit souci j'ai créé un site web avec une implantation d'un module qui permet de garder 1 seule ficher PHP et de contenir tout mon site enfin bref les liens se présente sous cette forme :

accueil.php?page=accueil
le problème est que quand je tape mettons ceci :

accueil.php?page=test
accueil.php?page=/*

j'ai un message :

Notice: Undefined variable: page_Accueil in C:\Program Files\EasyPHP-DevServer-14.1VC9\data\localweb\site\config\page.php on line 38

qui indique que la variable ou les variables ne sont pas définie ce qui est logique en somme si je tape n'importe quoi après le = mais, je souhaiterais faire en sorte que rien ne se passe si la variable n'existe pas (je ne sais pas si vous comprenez ce que je veux dire ?

Voilà comment est la page concerner:

<?php
include 'script_site.php';


$page=$_GET['page'];
switch ($page){

case 'accueil':
echo $page_accueil;
break;

Case 'contact':
echo $page_contact;
break;

Case 'news-sommaire':
echo $page_news_sommaire;
break;

Case 'prestataire':
echo $page_prestataire;
break;

Case 'mapmonde':
echo $map_monde_prestataire;
break;

Case 'irc':
echo $page_IRC;
break;

Case 'prestation':
echo $page_prestation;
break;

Case 'entreprise':
echo $page_entreprise;
break;

Case 'apropos':
echo $page_apropos;
break;

default :
echo $page_Accueil;
break;
}
?>


Merci pour vos réponses

1 réponse

Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 126
18 juin 2014 à 18:55
Bonjour,
Le problème est assez simple, si tu tape n'importe quoi après ton =, il ne sera pas dans les "case" du Switch.
Le switch t'affichera donc ce qui se trouve en Default :
default :
echo $page_Accueil;
break;
Or, c'est cette variable là "$page_Accueil" qui n'existe pas, peut-être une majuscule en trop :)
0
Noel-barbu Messages postés 258 Date d'inscription mercredi 5 septembre 2012 Statut Membre Dernière intervention 16 janvier 2018 2
Modifié par Noel-barbu le 18/06/2014 à 19:06
Au faite je cherche justement a combler le problème du fais de pouvoir taper n'importe quoi après le égale car les autres variables sont bonne c'est juste moi en testant sous cette forme

accueil.php?page=test

que le message est apparue ce qui est normale puisque que la variable test n'est pas définie justement je veut faire sorte de filtré après le egale ou qui ne se passe rien même si ont tape n'importe quoi après le =
0
Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 126
18 juin 2014 à 19:11
J'ai peur que tu n'est pas vraiment lu/compris ma réponse.
Tu te trompe de variable non défini en faite :
Je te cite :
puisque que la variable test n'est pas définie 
test n'est pas une variable dans ce cas, mais la valeur de $_GET["page"], il n'y a rien de non défini ici donc.

Le problème se pose avec le Switch, comme tu n'a pas de valeur correspondante avec $_GET["page"], tu passe directement au default qui fais un echo sur
$page_Accueil
, c'est cette variable qui n'existe pas, j'ai supposé qu'une majuscule est en trop, mais si tu n'a pas cette variable, enlève l'echo...
0
Noel-barbu Messages postés 258 Date d'inscription mercredi 5 septembre 2012 Statut Membre Dernière intervention 16 janvier 2018 2
Modifié par Noel-barbu le 18/06/2014 à 19:24
sisi jai compris Nhay ...

mes variables sont définie dan le fichier script_site.php (j'ai oublie ce détail)

include 'script_site.php';

donc ils existent ça ce n'est pas le problème dans le qu'a présent, le problème est de pourvoir faire comprendre que même si je tape n'importe quoi après le égale cela reste de marbre.
peut importe ce qui est taper comme connerie après le égale.
0
Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 126
18 juin 2014 à 19:25
Et comme je te l'ai dit, si tu marque n'importe quoi, ton switch est déjà codé pour afficher quelque chose par défaut.
Pour le moment il affiche la variable $page_Accueil, soit le nom de la variable est mauvaise (Majuscules en trop) soit, si tu ne veut rien affiché, tu enlève ton echo.
0
Noel-barbu Messages postés 258 Date d'inscription mercredi 5 septembre 2012 Statut Membre Dernière intervention 16 janvier 2018 2
Modifié par Noel-barbu le 18/06/2014 à 19:27
Le default devrais jouer sont rôle si test n'existe pas puis ce que de toute façon j'ai taper ça au hasard mais bon se n'est pas le qu'a.
0