[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
Bonjour,
Comme l'indique ce titre, j'ai cette erreur qui s'affiche depuis que j'ai du supprimer ma BDD. Depuis, je pense l'avoir refaite comme elle était, mais lorsque j'arrive sur la page de connexion (et de déconnexion), elle m'affiche cette erreur là :

"Notice: Undefined variable: page in C:\wamp\www\Forces-Opposantes\menu.php on line 132"

Elle m'en affiche plusieurs en plus. J'ai vérifier, je n'ai aucune variable à ces lignes là, à part une variable $i qui compte les ligne, et une variable $page qui est définie par moi-même après une suite de conditions. Que faire ?

Merci d'avance !

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 329
23 mai 2009 à 13:45
Que faire ?
Mmmmmmmmh, nous donner ton code, par exemple ?

Surtout la fameuse "suite de conditions".
0
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
<?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++;
	}
}
?>
0
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 329
23 mai 2009 à 14:07
Ce code là ne vas pas :
$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
0
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
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".
0

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 329
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 !
0
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
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).
0
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
Ah non c'est bon, j'ai traquée l'erreure tout seul finalement, merci beaucoup quand même ^^ !
0