Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/04/2007, 04h15   #1
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 28
Points : 13
Points : 13
Par défaut [SQL] Problème de variable non définies

Bonjour , suite à une améliorations de mon script j'ai un message m'indiquant que trois variable ne sont pas définis .
Voila les code des deux fichiers en question :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<!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" xml:lang="fr" >
 
   <head>
 
       <title>Rédiger une news</title>
 
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 
        <style type="text/css">
 
        h3, form
 
        {
 
            text-align:center;
 
        }
 
        </style>
 
    </head>
 
 
 
    <body>
 
 
 
<h3><a href="liste_news.php">Retour à la liste des news</a></h3>
 
 
 
<?php
 
        require('config.php');
 
if (isset($_GET['modifier_news'])) 
 
{
 
 
    $retour = mysql_query('SELECT * FROM news WHERE id=' . $_GET['modifier_news']);
 
    $donnees = mysql_fetch_array($retour);
 
     $text = stripslashes($_POST['texte']);
 
    $titre = $donnees['titre'];
$image = $donnees['image'];
    $texte = $donnees['texte'];
 
    $id_news = $donnees['id']; 
 
}
 
else 
 
{
 
 
    $titre = '';
$image = '';
$mois = '';
$annee = '';
$texte = '';
$id_news = 0; 
 
}
 
?>
 
 
 
<form action="liste_news.php" method="post">
 
<p>Titre : <input type="text" size="30" name="titre" value="<?php echo $titre; ?>" /></p>
 
<p>Image : <input type="text" size="50" name="image" value="<?php echo $image; ?>"/><p>
<p>Insere le mois 
<label>
               <select name="mois">
               <option value="01">Janvier</option>
               <option value="02">Fevrier</option>
               <option value="03">Mars</option>
               <option value="04">Avril</option>
               <option value="05">Mai</option>
               <option value="06">Juin</option>
               <option value="07">Juillet</option>
               <option value="08">Aout</option>
               <option value="09">Septembre</option>
               <option value="10">Octobre</option>
               <option value="11">Novembre</option>
               <option value="12">Décembre</option>
		   </select>
		   </label>
		   </p>
		   <p> Et l''année <label>
		   <select name="annee">
		   <option value="07">2007</option>
		   <option value="08">2008</option>
		   <option value="09">2009</option>
		   <option value="10">2010</option>
		   </select>
		   </label>
		   <br /></p>
    Contenu :<br />
 
    <textarea name="texte" cols="50" rows="10">
 
    <?php echo $texte; ?>
 
    </textarea><br />
 
 
 
    <input type="hidden" name="id_news" value="<?php echo $id_news; ?>" />
 
    <input type="submit" value="Envoyer" />
 
</p>
 
</form>
 
<p><a href=""></a></p>
 
</body>
 
</html>
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<!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" xml:lang="fr" >
   <head>
       <title>Liste des news</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <style type="text/css">
        h2, th, td
        {
            text-align:center;
        }
        table
        {
            border-collapse:collapse;
            border:2px solid black;
            margin:auto;
        }
        th, td
        {
            border:1px solid black;
        }
        </style>
    </head>
 
    <body>
 
 
<h2><a href="rediger_news.php">Ajouter une news</a></h2>
 
<?php
       require('config.php');
 
if (isset($_POST['titre']) AND isset($_POST['texte']))
{
    $titre = addslashes(htmlspecialchars(trim($_POST['titre'])));
    $texte = addslashes(trim($_POST['texte']));
 
    if ($_POST['id_news'] == 0)
    {
 
        mysql_query("INSERT INTO news VALUES('', '" . $titre . "' , '" . $texte . "' , '" . $image . "' , '" . $mois . "' , '" . $annee . "' , '" . time() . "')");
    }
    else
    {
 
        mysql_query("UPDATE news SET titre='" . $titre . "', texte='" . $texte . "' , image='" . $image . "' WHERE id=" . $_POST['id_news']);
    }
}
 
 
if (isset($_GET['supprimer_news'])) 
{
 
    mysql_query('DELETE FROM news WHERE id=' . $_GET['supprimer_news']);
}
?>
 
<table><tr>
<th>Modifier</th>
<th>Supprimer</th>
<th>Titre</th>
<th>Date</th>
</tr>
 
<?php
$retour = mysql_query('SELECT * FROM news ORDER BY id DESC');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
{
?>
 
<tr>
<td><?php echo '<a href="rediger_news.php?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td>
<td><?php echo '<a href="liste_news.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
<td><?php echo stripslashes($donnees['titre']); ?></td>
<td><?php echo date('d/m/Y', $donnees['date']); ?></td>
</tr>
 
<?php
} // Fin de la boucle qui liste les news
?>
</table>
  <p><a href="">Page d'accueil du site</a></p>
</body>
</html>
Et voici le message en question
Citation:
Notice: Undefined variable: image in C:\Program Files\EasyPHP 2.0b1\www\News\liste_news.php on line 40

Notice: Undefined variable: mois in C:\Program Files\EasyPHP 2.0b1\www\News\liste_news.php on line 40

Notice: Undefined variable: annee in C:\Program Files\EasyPHP 2.0b1\www\News\liste_news.php on line 40
Merci d'avance
micka39 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2007, 04h56   #2
Membre actif
 
Étudiant
Inscription : avril 2007
Messages : 181
Détails du profil
Informations personnelles :
Âge : 24
Localisation : Canada

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2007
Messages : 181
Points : 195
Points : 195
Salut,

La réponse à ton problème est dans le message d'erreur :

Les 3 variables $image, $mois et $annee qui se trouvent dans ta requête d'insertion ne sont pas définis (ligne 40 du fichier liste_news.php).
Aucune valeur n'a encore été affectée à ces variables vu que tu les utilises pour la première fois dans ta requête...

De plus, je ne sais pas à quoi correspondent exactement tes variables $mois et $annee mais si c'est pour enregistrer la date de publication de la news, c'est inutile vu que le timestamp contient déjà toutes ces informations.
Haze. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2007, 12h51   #3
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 28
Points : 13
Points : 13
Mes variables sont bien initialisée avec une valeur vide au début puis après le formulaire elle contiennent bien des valeurs !

Sinon je me sert du timestamp aussi mais c'est pour me simplifier une archive des news que je fais sa
micka39 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2007, 13h33   #4
Membre émérite
 
Inscription : juin 2002
Messages : 1 013
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 1 013
Points : 959
Points : 959
je n'ai pas du tout lu ton code, mais, si tu as le message
Citation:
Notice: Undefined variable: image in C:\Program Files\EasyPHP 2.0b1\www\News\liste_news.php on line 40
c'est que cette variable n'a pas été définie, et ton affirmation
Citation:
Mes variables sont bien initialisée avec une valeur vide au début puis après le formulaire elle contiennent bien des valeurs !
est certainement fausse
francis m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2007, 13h38   #5
Membre émérite
 
Inscription : juin 2002
Messages : 1 013
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 1 013
Points : 959
Points : 959
bon j'ai pris la peine de regarder ton code pour le plaisir et tu me diras dans quelle ligne tu as bien initialisé ces variables, parce que je n'ai rien trouvé
francis m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2007, 13h41   #6
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
$image, $mois, $annee sont issues d'un formulaire, si j'ai bien compris, donc elle ne sont pas définies avant et c'est alors $_POST['X'] que vous devez utiliser (dans liste_news.php).

Attention : n'utilisez pas addslashes mais plutôt mysql_real_escape_string !
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2007, 15h21   #7
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 28
Points : 13
Points : 13
Citation:
Envoyé par francis m
bon j'ai pris la peine de regarder ton code pour le plaisir et tu me diras dans quelle ligne tu as bien initialisé ces variables, parce que je n'ai rien trouvé
Je croyais en tant que débutant que pour initialiser les variables il falais faire comme sa :
Code :
1
2
3
$image = '';
$mois = '';
$annee = '';
Sinon merci à Julp mon problème est maintenant résolue !
micka39 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2007, 02h14   #8
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 28
Points : 13
Points : 13
Bonjour , je voudrais cette fois savoir si je peur faire une requête SQL comme ceci mais je n'arrive pas à la faire fonctionner !
Code :
"SELECT * FROM news WHERE mois LIKE '".($mois2)."' AND WHERE annee LIKE '".($years)."' ORDER BY id ";
Merci par avance
micka39 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2007, 02h50   #9
Membre actif
 
Étudiant
Inscription : avril 2007
Messages : 181
Détails du profil
Informations personnelles :
Âge : 24
Localisation : Canada

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2007
Messages : 181
Points : 195
Points : 195
Pour commencer il y a une erreur de syntaxe dans ta requête, car il ne peut pas y avoir plus d'une seule clause WHERE.
Si ta requête comporte plusieurs restrictions, la syntaxe correcte est :
Code :
1
2
3
4
5
"SELECT * 
FROM news 
WHERE mois LIKE '$mois2' 
AND annee LIKE '$years' 
ORDER BY id";
De plus, l'opérateur LIKE sert à comparer deux chaînes de caractères (avec des expressions telles que "contient" / "commence par" / "se termine par"), ce qui n'est pas utile dans ton cas.
Pour en savoir plus : http://sql.developpez.com/sqlaz/select/#L3.4
Si tu cherches un terme exact autant utiliser simplement l'opérateur =
Si après ça, tu as encore des problèmes, donne nous les types des champs "mois" et "annee" ainsi que le format dans lequel sont enregistrées les données...
Haze. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2007, 23h10   #10
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 28
Points : 13
Points : 13
Merci le problème est résolu .
Je met dans des variables int les mois et années des news et j'ai un champs timestamp pour avoir la date et l'heure
micka39 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h50.


 
 
 
 
Partenaires

Hébergement Web