IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] Problème de variable non définies


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 37
    Points : 37
    Points
    37
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    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

  2. #2
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 181
    Points : 199
    Points
    199
    Par défaut
    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.
    <3 Debian
    [ C | C++ | PHP | Python ]

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    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

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    je n'ai pas du tout lu ton code, mais, si tu as le message
    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
    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

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    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é

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    $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 !

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $image = '';
    $mois = '';
    $annee = '';
    Sinon merci à Julp mon problème est maintenant résolue !

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM news WHERE mois LIKE '".($mois2)."' AND WHERE annee LIKE '".($years)."' ORDER BY id ";
    Merci par avance

  9. #9
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 181
    Points : 199
    Points
    199
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...
    <3 Debian
    [ C | C++ | PHP | Python ]

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Problème variable non définie macro Excel réalisation courrier
    Par benadry dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/03/2014, 13h38
  2. [MySQL] Variable non définie - problème session
    Par andaman dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 20/07/2013, 12h25
  3. Problèmes avec FPLOT -> "variables non définies"
    Par covich dans le forum MATLAB
    Réponses: 1
    Dernier message: 04/02/2010, 13h38
  4. Réponses: 12
    Dernier message: 10/05/2006, 14h02
  5. Problème de variable non définie
    Par Mimi Bulles dans le forum Langage
    Réponses: 2
    Dernier message: 07/05/2006, 09h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo