Undefined variable

Fermé
vince240986 - 25 août 2011 à 21:35
 __construct - 26 août 2011 à 20:47
Bonjour,

Je viens vers vous parce que je débute en PHP et que j'ai un petit souci au niveau d'un fichier et je ne comprends pas trop pourquoi en fait. Voici le code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/
DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr-fr">
 
<head>
 
  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
  <link href="../style.css" rel="stylesheet" type="text/css"/>
  <title>Ajouter une catégorie</title>
</head>
 
<body>
 
<div id="moncadre">
<?php include('menu.php');?>
 
<div class="cadrecentrale">
<h1>Ajouter une catégorie</h1>
<?php
//Si l'action de valider a été faite
if(isset($_POST["Valider"]))
{
$titre = htmlspecialchars(stripcslashes(trim($_POST["titre"])));
$description = htmlspecialchars(stripcslashes($_POST["description"]));
//Vérification du formulaire
if(empty($titre)){
$alerte0 = '<div class="erreur"><a name="ok"></a>Vous n\'avez pas saisie de titre.</div>';
}
else if(empty($description)){
$alerte1 ='<div class="erreur"><a name="ok"></a>Vous n\'avez pas saisie de description.
</div>';
}
//Si tout est ok
else
{
//on se connecte à la base de données
include('../connexion_bd.php');
 
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de sélectionner une base de donnée. Assurez vous d\'avoir correctement remplit les données du fichier connexion_bd.php.');
 
//on enregistre les données
$result = mysql_query("INSERT INTO CATEGORIES VALUES('','".mysql_real_escape_string($titre)."','".mysql_real_escape_string($description)."')");
//Si il y a une erreur, on crie ^^
if (!$result) {
    die('Requête invalide : ' . mysql_error());
}
else{
//Si tout est ok, on informe le webmaster
$message_ok = '<div class="erreur"><a name="ok"></a><b>Catégorie enregistrée 
avec succès!</b></div>';
}
//On ferme else
}
//On ferme if(isset($_POST["Valider"]))
}
?>

  <?php echo $message_ok;?>
<form action="#ok" method="post">
  <?php echo $alerte0;?>
 <p>Titre de la catégorie :<br/>
 <input name="titre" size="65" value="<?php
 if (!empty($_POST["titre"])) {
 echo stripcslashes(htmlspecialchars($_POST["titre"],ENT_QUOTES));
 }?>" type="text"/></p>
  <?php echo $alerte1;?>
 <p>Description de la catégorie :<br/>
 <textarea name="description" rows="10" cols="50" ><?php
 if (!empty($_POST["description"])) {
 echo stripcslashes(htmlspecialchars($_POST["description"],ENT_QUOTES));
 }?></textarea></p>
 
 <p>
 <input name="Valider" value="Valider" type="submit"/>
 <input name="Effacer" value="Effacer" type="reset"/>
 </p>
</form>
</div>
 
<?php include('../footer.php');?>
 
</div>
 
</body>
 
</html>


Voici les erreurs affichés:

Notice: Undefined variable: message_ok in C:\wamp\www\cms\admin\ajouter-categorie.php on line 59
Notice: Undefined variable: alerte0 in C:\wamp\www\cms\admin\ajouter-categorie.php on line 61
Notice: Undefined variable: alerte1 in C:\wamp\www\cms\admin\ajouter-categorie.php on line 67

Donc j'ai bien compris qu'il ne trouvait pas les variables "message_ok", "alerte0" et "alerte1" mais pourquoi alors qu'elles sont déclarées plus haut? De plus lorsque j'exécute le formulaire, ce dernier fonctionne, de même que les messages d'erreurs lorsque par exemple on n'entre pas de titre :)

Donc si une âme charitable pouvait m'aiguiller ce serait sympa :)

Vincent

P.S.: si ça peut aider je suis sous un environnement local avec wamp

Version de Apache: 2.2.17
Version de PHP: 5.3.4
Version de MySQL: 5.1.53

2 réponses

Bonsoir,

Tant que tu n'as pas soumis le formulaire les variables $message_ok, $alerte0 et $alerte1 n'existent pas pour PHP et donc lorsque tu fais :
<?php echo $alerte0; ?>

PHP affiche un message d'erreur car ces variables ne sont pas encore déclarées !!!
0
Merci pour de début de réponse qui me semble des plus logique :)

Néanmoins, j'ai essayé de placer ce code un peu partout et le message d'erreur apparait tout le temps malgré tout!

Je souhaiterai savoir où je me trompe en fait (j'ai tenté de viré les <? php echo ?> et de les mettre un peu partout mais sans résultat et je ne vois vraiment pas ce qui est incorrect ! (les variables sont bien déclarées après tout?!). Merci encore
0
En fait c'est bon, pour ceux qui auraient le même problème:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/
DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr-fr">
 
<head>
 
  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
  <link href="../style.css" rel="stylesheet" type="text/css"/>
  <title>Ajouter une catégorie</title>
</head>
 
<body>
 
<div id="moncadre">
<?php include('menu.php');?>
 
<div class="cadrecentrale">
<h1>Ajouter une catégorie</h1>
<?php
//Si l'action de valider a été faite
if(isset($_POST["Valider"]))
{
$titre = htmlspecialchars(stripcslashes(trim($_POST["titre"])));
$description = htmlspecialchars(stripcslashes($_POST["description"]));
//Vérification du formulaire
if(empty($titre)){
$alerte0 ='<div class="erreur"><a name="ok"></a>Vous n\'avez pas saisie de titre.</div>';  
echo $alerte0;
}
else if(empty($description)){$alerte1 ='<div class="erreur"><a name="ok"></a>Vous n\'avez pas saisie de description.</div>';
echo $alerte1;
}
//Si tout est ok
else
{
//on se connecte à la base de données
include('../connexion_bd.php');

mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de sélectionner une base de donnée. Assurez vous d\'avoir correctement remplit les données du fichier connexion_bd.php.');
 
//on enregistre les données
$result = mysql_query("INSERT INTO CATEGORIES VALUES('','".mysql_real_escape_string($titre)."','".mysql_real_escape_string($description)."')");
//Si il y a une erreur, on crie ^^
if (!$result) {die('Requête invalide : ' . mysql_error());}
else{
//Si tout est ok, on informe le webmaster
$message_ok = '<div class="erreur"><a name="ok"></a><b>Catégorie enregistrée avec succès!</b></div>';echo $message_ok;
}
//On ferme else
}
//On ferme if(isset($_POST["Valider"]))
}
?>

<form action="#ok" method="post">  
 <p>Titre de la catégorie :<br/>
 <input name="titre" size="65" value="<?php
 if (!empty($_POST["titre"])) {
 echo stripcslashes(htmlspecialchars($_POST["titre"],ENT_QUOTES));
 }?>" type="text"/></p>
 <p>Description de la catégorie :<br/>
 <textarea name="description" rows="10" cols="50" ><?php
 if (!empty($_POST["description"])) {
 echo stripcslashes(htmlspecialchars($_POST["description"],ENT_QUOTES));
 }?></textarea></p>
 
 <p>
 <input name="Valider" value="Valider" type="submit"/>
 <input name="Effacer" value="Effacer" type="reset"/>
 </p>
</form>
</div>
 
<?php include('../footer.php');?>
 
</div>
 
</body>
 
</html>
0
Utilisateur anonyme
26 août 2011 à 03:59
Un ptit marquer comme résolu si c terminé
0
Tu parles d'une solution...
Allez, pour le fun... et surtout pour aider les futurs visiteurs de ce topic à la recherche d'une solution ma foi toute... SIMPLE!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/ DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr-fr">
<head>
	<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
	<link href="../style.css" rel="stylesheet" type="text/css"/>
	<title>Ajouter une catégorie</title>
</head>
 
<body>
<div id="moncadre">
	<?php include('menu.php'); ?>
	<div class="cadrecentrale">
		<h1>Ajouter une catégorie</h1>
		<?php
		//Si l'action de valider a été faite
		if(isset($_POST["Valider"])) {
			$titre = htmlspecialchars(stripcslashes(trim($_POST["titre"])));
			$description = htmlspecialchars(stripcslashes($_POST["description"]));
			//Vérification du formulaire
			if(empty($titre)) {
				$alerte0 ='<div class="erreur"><a name="ok"></a>Vous n\'avez pas saisie de titre.</div>';  
			} else if(empty($description)) {
				$alerte1 ='<div class="erreur"><a name="ok"></a>Vous n\'avez pas saisie de description.</div>';
			} else {
				//on se connecte à la base de données
				include('../connexion_bd.php');

				mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
				mysql_select_db("$nom_de_la_base") or die('Impossible de sélectionner une base de donnée. Assurez vous d\'avoir correctement remplit les données du fichier connexion_bd.php.');
				//on enregistre les données
				$result = mysql_query("INSERT INTO CATEGORIES VALUES('','".mysql_real_escape_string($titre)."','".mysql_real_escape_string($description)."')");
				//Si il y a une erreur, on crie ^^
				if(!$result) {
					die('Requête invalide : ' . mysql_error());
				} else {
					//Si tout est ok, on informe le webmaster
					$message_ok = '<div class="erreur"><a name="ok"></a><b>Catégorie enregistrée avec succès!</b></div>';
				}
			}
		} else {
			$message_ok = '';
			$alerte0 = '';
			$alerte1 = '';
		}
		?>
		<?php echo $message_ok; ?>
		<form action="#ok" method="post">
			<?php echo $alerte0; ?>
			<p>Titre de la catégorie :<br/>
			<input name="titre" size="65" value="<?php if(!empty($_POST["titre"])) {echo stripcslashes(htmlspecialchars($_POST["titre"],ENT_QUOTES));} ?>" type="text"/></p>
			<?php echo $alerte1; ?>
			<p>Description de la catégorie :<br/>
			<textarea name="description" rows="10" cols="50" ><?php
			if(!empty($_POST["description"])) {echo stripcslashes(htmlspecialchars($_POST["description"],ENT_QUOTES));} ?></textarea></p>
			<p>
				<input name="Valider" value="Valider" type="submit"/> <input name="Effacer" value="Effacer" type="reset"/>
			</p>
		</form>
	</div>
	<?php include('../footer.php'); ?>
</div>
</body>
</html>
0