Undefined variable
vince240986
-
__construct -
__construct -
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:
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
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
A voir également:
- Undefined variable
- Variable d'environnement temp - Forum Word
- Vba range avec variable ✓ - Forum VB / VBA
- Range avec une Variable ✓ - Forum VB / VBA
- Vérifiez la variable d'environnement TEMP. QUE FAIRE ????? ✓ - Forum Microsoft Office
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
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 affiche un message d'erreur car ces variables ne sont pas encore déclarées !!!
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 !!!
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
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
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>
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!
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>