[PHP] Problème "Undefined Variable&qu
Résolu/Fermé
Frankyd13
Messages postés
45
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
19 mai 2011
-
23 mai 2009 à 13:38
Frankyd13 Messages postés 45 Date d'inscription mercredi 6 mai 2009 Statut Membre Dernière intervention 19 mai 2011 - 24 mai 2009 à 17:56
Frankyd13 Messages postés 45 Date d'inscription mercredi 6 mai 2009 Statut Membre Dernière intervention 19 mai 2011 - 24 mai 2009 à 17:56
A voir également:
- [PHP] Problème "Undefined Variable&qu
- Easy php - Télécharger - Divers Web & Internet
- Vba excel sélectionner une plage de cellules variable ✓ - Forum VB / VBA
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Word
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
7 réponses
Yoan
Messages postés
11795
Date d'inscription
mardi 1 février 2005
Statut
Modérateur
Dernière intervention
10 décembre 2023
2 330
23 mai 2009 à 13:45
23 mai 2009 à 13:45
Que faire ?
Mmmmmmmmh, nous donner ton code, par exemple ?
Surtout la fameuse "suite de conditions".
Mmmmmmmmh, nous donner ton code, par exemple ?
Surtout la fameuse "suite de conditions".
Frankyd13
Messages postés
45
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
19 mai 2011
1
23 mai 2009 à 13:57
23 mai 2009 à 13:57
<?php if (isset($_SESSION['connecte']) AND $_SESSION['connecte'] == true) { mysql_connect("localhost", "root", ""); mysql_select_db("forces-opposantes"); $retour = mysql_query("SELECT * FROM membres WHERE ID = '".$_SESSION['ID']."'"); $donnees = mysql_fetch_array($retour); include("session.php"); mysql_close(); $nomPage = $_SERVER['PHP_SELF']; $nomPage = preg_replace("#^/[A-Za-z-]{1,}/([a-z_]{1,}.[a-z]{1,4})$#", "$1", $nomPage); if ($nomPage == "accueil_membre.php") { $page = 1; } elseif ($nomPage == "marche.php") { $page = 2; } elseif ($nomPage == "banque.php") { $page = 3; } elseif ($nomPage == "groupe.php") { $page = 4; } elseif ($nomPage == "forum.php") { $page = 5; } $i = 1; while ($i <= 5) { if ($i == $page) { ?> <div class="element_menu_centre"> <?php } else { ?> <div class="element_menu"> <?php } ?> <table> <tr> <td> <?php if ($i == 1) { ?> <a href="accueil_membre.php">Planque</a> <?php } elseif ($i == 2) { ?> <a href="marche.php">Marché</a> <?php } elseif ($i == 3) { ?> <a href="banque.php">Banque</a> <?php } elseif ($i == 4) { ?> <a href="groupe.php">Groupe</a> <?php } elseif ($i == 5) { ?> <a href="forum.php">Forum</a> <?php } ?> </td> </tr> </table> </div> <?php $i++; } ?> <?php } else { $nomPage = $_SERVER['PHP_SELF']; $nomPage = preg_replace("#^/[A-Za-z-]{1,}/([a-z]{1,}.[a-z]{1,4})$#", "$1", $nomPage); if ($nomPage == "index.php") { $page = 1; } elseif ($nomPage == "news.php") { $page = 2; } elseif ($nomPage == "inscription.php") { $page = 3; } elseif ($nomPage == "faq.php") { $page = 4; } elseif ($nomPage == "contact.php") { $page = 5; } $i = 1; while ($i <= 5) { if ($i == $page) // Ligne 132 { ?> <div class="element_menu_centre"> <?php } else { ?> <div class="element_menu"> <?php } ?> <table> <tr> <td> <?php if ($i == 1) { ?> <a href="index.php">Accueil</a> <?php } elseif ($i == 2) { ?> <a href="news.php">Journal</a> <?php } elseif ($i == 3) { ?> <a href="inscription.php">Inscription</a> <?php } elseif ($i == 4) { ?> <a href="faq.php">F.A.Q.</a> <?php } elseif ($i == 5) { ?> <a href="contact.php">Contact</a> <?php } ?> </td> </tr> </table> </div> <?php $i++; } } ?>
Yoan
Messages postés
11795
Date d'inscription
mardi 1 février 2005
Statut
Modérateur
Dernière intervention
10 décembre 2023
2 330
23 mai 2009 à 14:07
23 mai 2009 à 14:07
Ce code là ne vas pas :
Je pense que ce que tu veux faire c'est que quand l'utilisateur tape http://www.example.org/forum.php tu affiches la page n°5. Mais ce que tu as fait ne marche pas car PHP_SELF récupère le nom de fichier réel (qui autrement dit est toujours le même).
Conclusion : $nomPage n'a pas une valeur que tu attends, et du coup $page vaut NULL !
Remplace ton cafouilli pour inclure la bonne page en utilisant la redirection ou la réécriture d'URL (cf Google). Par exemple l'appel à /groupe.php sera réécrit ou redirigé en/sur /index.php?page=4
$nomPage = $_SERVER['PHP_SELF']; $nomPage = preg_replace("#^/[A-Za-z-]{1,}/([a-z_]{1,}.[a-z]{1,4})$#", "$1", $nomPage); if ($nomPage == "accueil_membre.php") { $page = 1; } elseif ($nomPage == "marche.php") { $page = 2; } elseif ($nomPage == "banque.php") { $page = 3; } elseif ($nomPage == "groupe.php") { $page = 4; } elseif ($nomPage == "forum.php") { $page = 5; }
Je pense que ce que tu veux faire c'est que quand l'utilisateur tape http://www.example.org/forum.php tu affiches la page n°5. Mais ce que tu as fait ne marche pas car PHP_SELF récupère le nom de fichier réel (qui autrement dit est toujours le même).
Conclusion : $nomPage n'a pas une valeur que tu attends, et du coup $page vaut NULL !
Remplace ton cafouilli pour inclure la bonne page en utilisant la redirection ou la réécriture d'URL (cf Google). Par exemple l'appel à /groupe.php sera réécrit ou redirigé en/sur /index.php?page=4
Frankyd13
Messages postés
45
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
19 mai 2011
1
23 mai 2009 à 15:05
23 mai 2009 à 15:05
J'ai regardé la valeur de nomPage, et elle affiche bien ce que je cherche.
En fait, c'est pour un menu, et selon la page dans laquelle on se trouve, le menu met en valeur ou pas l'onglet courant (en gros, si on est dans la page d'accueil, il met en gras "Accueil").
Quand on est sur accueil_membre.php, $nomPage a bien "accueil_membre.php".
En fait, c'est pour un menu, et selon la page dans laquelle on se trouve, le menu met en valeur ou pas l'onglet courant (en gros, si on est dans la page d'accueil, il met en gras "Accueil").
Quand on est sur accueil_membre.php, $nomPage a bien "accueil_membre.php".
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Yoan
Messages postés
11795
Date d'inscription
mardi 1 février 2005
Statut
Modérateur
Dernière intervention
10 décembre 2023
2 330
23 mai 2009 à 17:28
23 mai 2009 à 17:28
J'ai pas cherché à comprendre la suite du code mais pfiou la vache, quel truc compliqué pour faire pas grand chose ^^
Ceci ne marchera pas lorsque la page est à la racine du site. Puisque PHP_SELF ne sera pas de la forme /qqchose/qqchose.qqch et ne sera pas modifié. Ainsi pour la page http://example.org/test.php, $nomPage vaudra "/test.php" et ça ne correspond à rien dans la "suite de conditions".
Si ce fonctionnement n'est pas voulu il te suffit de rendre le premier slash et le premier texte facultatif avec * :
^/*[A-Za-z-]*/([a-z_]{1,}.[a-z]{1,4})$
D'autre part pour éviter d'avoir un comportement imprévu comme celui-ci tu devrais mettre une valeur par défaut que tu traiteras ensuite (c-à-d un "else $nomPage=0;" en considérerant que, comme il n'existe pas de page 0, c'est un signal d'erreur et dans ce cas tu la traite en conséquence (en la quittant violemment "exit("Page $nomPage inconnue.");" ou de manière plus complète ...)
Même si dans l'absolu ça sert à rien parce que PHP_SELF ne devrait jamais te retourner un nom de fichier que tu n'as pas spécifié dans le code, ça pourra servir ne serait-ce que le jour où tu vas ajouter une page et que tu vas oublier de rajouter le elsif correspondant : avec un message d'erreur explicite c'est quand-même plus clair !
Ceci ne marchera pas lorsque la page est à la racine du site. Puisque PHP_SELF ne sera pas de la forme /qqchose/qqchose.qqch et ne sera pas modifié. Ainsi pour la page http://example.org/test.php, $nomPage vaudra "/test.php" et ça ne correspond à rien dans la "suite de conditions".
Si ce fonctionnement n'est pas voulu il te suffit de rendre le premier slash et le premier texte facultatif avec * :
^/*[A-Za-z-]*/([a-z_]{1,}.[a-z]{1,4})$
D'autre part pour éviter d'avoir un comportement imprévu comme celui-ci tu devrais mettre une valeur par défaut que tu traiteras ensuite (c-à-d un "else $nomPage=0;" en considérerant que, comme il n'existe pas de page 0, c'est un signal d'erreur et dans ce cas tu la traite en conséquence (en la quittant violemment "exit("Page $nomPage inconnue.");" ou de manière plus complète ...)
Même si dans l'absolu ça sert à rien parce que PHP_SELF ne devrait jamais te retourner un nom de fichier que tu n'as pas spécifié dans le code, ça pourra servir ne serait-ce que le jour où tu vas ajouter une page et que tu vas oublier de rajouter le elsif correspondant : avec un message d'erreur explicite c'est quand-même plus clair !
Frankyd13
Messages postés
45
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
19 mai 2011
1
24 mai 2009 à 17:48
24 mai 2009 à 17:48
Ce que je comprend pas, c'est que entre le avant (où ça marchait) et maintenant, la seule choses que j'ai changée, c'est la BDD (que j'ai remis comme à l'origine).
Frankyd13
Messages postés
45
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
19 mai 2011
1
24 mai 2009 à 17:56
24 mai 2009 à 17:56
Ah non c'est bon, j'ai traquée l'erreure tout seul finalement, merci beaucoup quand même ^^ !