Partage
  • Partager sur Facebook
  • Partager sur Twitter

PHP/TP3/SEMAINE 3/"mini-chat"

Problème incrustation du DATETIME dans mon code

    18 juillet 2019 à 17:56:24

    Bonjour a tous!

    J'ai besoin de votre aide, j'ai beaucoup de mal a comprendre depuis que je suis arriver a ma progression ,je suis bloqué sur le TP de la semaine 3 sur le cours PHP de Mathieu Nebra. En effet, mon code ne fonctionne plus depuis que j'ai mis le DATETIME "envoyer automatiquement" ...Pourriez vous m'aider svp ?

    Voici mon ERREUR:

    MON ERREUR

     [https://openclassrooms.com/forum/sujet/foire-aux-questions-php] j'ai fait mes recherche ici

    - Voici ma structure avec PhpMyAdmin:

    Bdd_mysql

     Voici mon code : mini_chat.php:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Mini-chat</title>
        </head>
        <style>
        form
        {
            text-align:center;
        }
        </style>
        <body>
        
        <form action="minichat_post.php" method="post">
            <p>
            <input type="text" name="pseudo" id="pseudo" placeholder="Pseudo"/><br />
            <input type="text" name="message" id="message" placeholder="Message" /><br />
    
            <input type="submit" value="Envoyer" />
        </p>
        </form>
    
    <?php
    try
    {
        $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
    }
    catch(Exception $e)
    {
            die('Erreur :' . $e->getMessage());
    }
    
    $reponse = $bdd->query('SELECT pseudo, message, DATE_FORMAT(date_ajout, \'%d/%m/%Y à %Hh%imin%ss\') AS date_ajout FROM mini_chat ORDER BY id DESC LIMIT 0, 10');
    
    while ($donnees = $reponse->fetch())
    {
        echo'<p><em>'. htmlspecialchars($donnees['date_ajout']);'</em><strong>' . htmlspecialchars($donnees['pseudo']) . '</strong> : ' . htmlspecialchars($donnees['message']) . '</p>';
    }
    
    $req->closeCursor();
    ?>
        </body>
    </html>
    

    -Voici mon code :minichat_post.php:

    <?php
    
    try
    {
    	$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
    
    $req = $bdd->prepare('INSERT INTO mini_chat (pseudo, message, date_ajout) VALUES(?, ?,NOW())');
    $req->execute(array($_POST['pseudo'], $_POST['message'],$_POST['date_ajout']));
    
    
    header('Location: mini_chat.php');
    ?>


    Merci d'avance,vous êtres mon dernier recous.

    • Partager sur Facebook
    • Partager sur Twitter
      18 juillet 2019 à 18:15:26

      Bonjour.

      Pour la première erreur, c'est normal étant donné que tu utilises une variable non définie.

      Pour la seconde elle rejoint la première erreur, étant donné que la variable n'existe pas, tu ne peux pas par conséquent utiliser une méthode dessus.

      Autre chose, dans ta requête SQL, donner un nom en alias à une colonne du même nom que celle-ci, n'a aucun sens.

      Tout comme d'autres qui ont créé un sujet en rapport à ce TP, tu fais également la même erreur qu'eux, ligne 13 de la page minichat_post, tu utilises une clé du tableau $_POST qui n'existe pas dans le formulaire, de plus qu'il est inutile dans la méthode execute.

      Et tout comme d'autres, tu ne fais aucune vérification sur les données soumises via le formulaire.

      -
      Edité par Lartak 18 juillet 2019 à 18:22:23

      • Partager sur Facebook
      • Partager sur Twitter

      Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

        18 juillet 2019 à 21:49:06

        merci pour ta réponse

        bien, vu si j'ai bien compris.

        je rajoute a ma table (ALTERTABLE`mini_chat`ADD`date_ajout_format`DATETIMENOTNULLDEFAULTCURRENT_TIMESTAMPAFTER`date_ajout`;)

        puis je rajoute mon alias comme dans le cour de ma nouvelle colonne "date_ajout_format

        [https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/915206-les-dates-en-sql]le cour que j'ai reviser

        et je supprime ",$_POST['date_ajout']" qui dans minichat_post

        <?php
        try
        {
            $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
        }
        catch(Exception $e)
        {
                die('Erreur :' . $e->getMessage());
        }
         
        $reponse = $bdd->query('SELECT pseudo, message, DATE_FORMAT(date_ajout, \'%d/%m/%Y à %Hh%imin%ss\') AS date_ajout_format FROM mini_chat ORDER BY id DESC LIMIT 0, 10');
         
        while ($donnees = $reponse->fetch())
        {
            echo'<p><em>'. htmlspecialchars($donnees['date_ajout_format']);'</em><strong>' . htmlspecialchars($donnees['pseudo']) . '</strong> : ' . htmlspecialchars($donnees['message']) . '</p>';
        }
         
        $req->closeCursor();
        ?>
            </body>
        </html>

        donc conclusion

        pseudo, message,(verification sur la bdd )on lui dit ils y a une date avec un format différant qui se situe dans la structure mini_chat mais on demande a limiter id 0 a 10 décroisant

        on prend les donner pseudo, message,(crée via le formulaire) la date est rajouter dans la colonne date_ajout_format on renvoi sur la page initiale

        on fait un echo date,pseudo, message

        mais dans ma réflexion j'ai oublier la colonne date_ajout ????? :waw:


        • Partager sur Facebook
        • Partager sur Twitter
          19 juillet 2019 à 0:14:26

          Mais non, tu n'as aucune colonne à ajouter dans la table.

          Je te disais que ça n'a pas de sens d'utiliser un nom d'alias qui est le même que le nom de la colonne, c'est en gros comme si tu faisais :

          SELECT date_ajout AS date_ajout FROM ma_table

          Tu comprends bien que ça n'a pas de sens.

          Donc sans créer de colonne supplémentaire dans la table, il te suffisait de faire :

          SELECT pseudo, message, DATE_FORMAT(date_ajout, \'%d/%m/%Y à %Hh%imin%ss\') AS date_ajout_format FROM mini_chat ORDER BY id DESC LIMIT 0, 10




          -
          Edité par Lartak 19 juillet 2019 à 0:15:04

          • Partager sur Facebook
          • Partager sur Twitter

          Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

            19 juillet 2019 à 18:53:23

            ma base fonctionne je découvre une erreur ici ";"
             echo'<p><em>'. htmlspecialchars($donnees['date_ajout_format']);'</em><strong>' . htmlspecialchars($donnees['pseudo']) . '</strong> : ' . htmlspecialchars($donnees['message']) . '</p>';
            
            
            la si j'ais bien compris le probleme et la variable $donnees
            • Partager sur Facebook
            • Partager sur Twitter
              19 juillet 2019 à 18:58:59

              Pour l'erreur que tu montres, le problème je t'en ai déjà parlé, la variable req n'existe pas, par conséquent tu ne peux ni récupérer de valeur dessus, ni utiliser de clé/index/méthode sur celle-ci, regardes bien dans ton code et tu ne définies à aucun moment la variable req dans le fichier mini_chat.php, tu as définie une autre variable pour y stocker la requête.

              -
              Edité par Lartak 19 juillet 2019 à 19:02:23

              • Partager sur Facebook
              • Partager sur Twitter

              Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

                19 juillet 2019 à 20:29:54

                en vrai je suis perdu

                car je crée une date automatique qui est pas sur un formulaire mais via le message elle reviens sur ma page initial

                je doit crée une variable  

                • Partager sur Facebook
                • Partager sur Twitter
                  19 juillet 2019 à 20:43:46

                  Salut, tu lis les erreurs? Tu lis les messages de Lartak ?

                  L'erreur t'indique que la variable $req n'existe pas , ce qui fait que tu ne peut pas utiliser closeCursor() dessus.

                  Pourquoi elle n'existe pas ?  Car tu l'a sans doute copier/Coller de quelque part :)

                  Ton closecursor() tu doit le faire sur une autre variable, dans ton code, regarde bien.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 juillet 2019 à 20:46:06

                    Bonsoir,

                    et dans le echo de ta boucle while, tu as un mis un ; pour concaténer alors qu'il te faut un .

                    Remontre nous tes deux pages afin qu'on voit ce que tu as modifié et repartir sur de bonne base, merci

                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 juillet 2019 à 1:14:55

                      J'avoues qu'il y a des messages d'erreurs de PHP qui ne sont pas spécialement compréhensible, mais les 3 messages d'erreurs que tu as là sont pourtant évident à comprendre, même si c'est en anglais :

                      Notice: Undefined variable req in C:\wamp64\www\tp_mini_chat\mini_chat.php on line 41

                      J'aimerais donc que tu m'explique ce que tu ne comprend pas dans ce message d'erreur, surtout que je te l'ai déjà expliqué deux fois.

                      De plus qu'une fois que tu auras corrigé cette erreur, tu n'auras plus les deux autres messages d'erreurs qui sont liés à celui-ci.

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

                      PHP/TP3/SEMAINE 3/"mini-chat"

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown