Partage
  • Partager sur Facebook
  • Partager sur Twitter

TP blog avec commentaires : aller plus loin

Problème enregistrement BDD

Sujet résolu
    25 mars 2019 à 16:35:16

    Bonjour,

    Je suis actuellement les cours sur PHP/MySQL de Mateo. J'ai réussit à terminer la première partie du TP : blog avec commentaires. Cependant dans la suite du TP il nous ai proposé d'ajouter un formulaire pour enregistrer des commentaires.

    Je vous met mon code :

    commentaires.php

    <DOCTYPE = html>
    <html>
        <head>
            <meta charset="utf-8"/>
            <link href="style.css" rel="stylesheet">
            <title>Mon blog</title>
        </head>
        <body>
            <h1> Mon super blog!</h1>
            <p>
                <a href="index_blog.php"> Retour à la liste des billets </a>
            </p>

        <?php
        // Connexion à la base de donnees
        try
        {
            $bdd = new PDO('mysql: host=localhost; dbname=test; charset=utf8', 'root', '');
        }
        catch (Exception $e)
        {
            die ('Erreur :' .$e->getMessage());
        }

        //Récupération du billet

            $req = $bdd->prepare('SELECT id, titre, contenu, DATE_FORMAT (date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr FROM billets WHERE id = ?');
            $req->execute(array($_GET['billet']));
            $donnees = $req->fetch();
        ?>

        <div class="news">
            <h3>
                <?php echo htmlspecialchars($donnees['titre']); ?>
                <em> le <?php echo $donnees['date_creation_fr']; ?> </em>
            </h3>

            <p>
                <?php echo htmlspecialchars($donnees['contenu']); ?>
            </p>
        </div>
            <h2> Commentaires</h2>
            <?php
                $req->closeCursor();

                //Récupération des commentaires

                $req =$bdd->prepare('SELECT auteur, commentaire, DATE_FORMAT (date_commentaire, \'%d/%m/%Y à %Hh%imin%ss\') AS date_commentaire_fr FROM commentaires WHERE id_billet=? ORDER BY date_commentaire');
                $req->execute(array($_GET['billet']));

                while ($donnees = $req->fetch())
                {
            ?>
        <p>
            <strong> <?php echo htmlspecialchars($donnees['auteur']); ?> </strong>
            le <?php echo $donnees['date_commentaire_fr']; ?>
        </p>
        <p>
            <?php echo htmlspecialchars($donnees['commentaire']); ?>
        </p>
                <?php
                } //Fin de la boucle des commentaires

                $req->closeCursor();
                ?>
            <form action="commentaires_post.php?billet= <?php echo $_GET['billet']; ?>" method="post">
                <input type="hidden" name="id_billet" value="<?php echo $_GET['billet']; ?>" />
                <p>
                <label for="auteur">Pseudo</label> : <input type="text" name="auteur" id="auteur"/> <br/>
                <label for="commentaire"> Commentaire </label> : <input type="text" name="commentaire" id="commentaire"/><br/>
                <input type="submit" value="Envoyer"/>
                </p>
            </form>
        </body>
    </html>   

    et commentaires_post.php

    <?php
    //Connexion à la base de données
    try
    {
        $bdd = new PDO('mysql: host=localhost; dbname=test; charset=utf8', 'root', '');
        $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
    }
    catch (Exception $e)
    {
        die ('Erreur : ' .$e->getMessage());
    }

    //Insertion d'un message à l'aide d'une requête préparée
    $req = $bdd->prepare('INSERT INTO commentaires (id_billet, auteur, commentaire, date_commentaire) VALUES (?,?,?, NOW())');
    $req->execute(array($_POST['billet'], $_POST['auteur'], $_POST['commentaire']));

    //Redirection du visiteur vers la page de commentaires
    header('Location: commentaires.php?billet=' . $_GET['billet']);
    ?>

    Le problème que je rencontre c'est que mon formulaire n'enregistre pas les informations dans ma BDD. Le retour à la page par le header fonctionne, et je n'ai aucun messages d'erreurs ( la redirection se fait très bien mais quand je consulte mes entrées dans le BDD de phpMyAdmin rien n'est ajouté...

    Je consulte tous les forums en long, large et en travers depuis deux jours pour trouver mon erreur sans résultats...

    Je suis débutante, si quelqu'un peut m'aiguiller vers mon/mes erreurs svp?

    Merci par avance

    • Partager sur Facebook
    • Partager sur Twitter
      25 mars 2019 à 17:49:36

      Bonsoir,

      D'où vient $_POST['billet'] dans commentaires_post.php ?

      Cordialement.

      • Partager sur Facebook
      • Partager sur Twitter
        27 mars 2019 à 10:05:08

        Bonjour JohanVallon,

        Effectivement c'est là qu'était ma coquille, c'est bien sûr $_POST['id_billet'] et non pas $_POST['billet'] qu'il fallait mettre... C'est si bête quand je le vois...

        Merci infiniment et bonne journée!! ;)

        • Partager sur Facebook
        • Partager sur Twitter
          27 mars 2019 à 11:59:51

          Bonjour,

          Merci d'utiliser la balise code Image

          Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Image de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: php;">Votre code ici</pre>.

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            2 avril 2019 à 15:51:38

            C'est noté Benzouye, merci je ne savais pas comment le faire...

            ;)

            • Partager sur Facebook
            • Partager sur Twitter

            TP blog avec commentaires : aller plus loin

            × 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