Partage
  • Partager sur Facebook
  • Partager sur Twitter

Organisation d'un système de commentaire

Sujet résolu
    2 décembre 2020 à 8:27:48

    Bonjour a vous, j'ai vraiment besoin d'aide s'il vous plait, je suis entrain de créer un système de commentaire avec réponse, et je voudrais savoir, pour les réponse comment les placer sous le commentaire associé. j'ai regarder des forum, et j'ai vue des personnes qui ont mis les réponse sur la même table que celui commentaire poster c'est à dire: id, nom, commentaire, ensuite le post_id. Dans mon cas a moi j'ai fais une table pour les commentaire et une tables pour les réponses, mais un petit problème je n'arrive pas a récupérer l'id du commentaire, j'ai fais un lastinsertId mais en vain quand j'envoi une réponse mon code tourne dans le vide. j'ai mis un coup de var_dump() ca me retourne rien, pas d'erreur. Est-ce que quelqu'un aurait la solution s'il vous plait ?

    Voici mon code en php:

    if(!empty($_POST['id'])) // GET ID POST
        {
            $get_id = htmlspecialchars($_POST['id']);
            //commentaire espace//
            if(isset($_POST['id']) && !empty($_POST['commentaire'])) //GET ID POST
            {
    
                if($_SERVER["REQUEST_METHOD"] == "POST")
                {
                 $commentaire = trim($_POST['commentaire']);
                 $commentaire_lenght = strlen($commentaire); 
                 $token = sha1(microtime());
                 if($commentaire_lenght < 1000)
                 {
                    $datas = [
                        'commentaire' => $commentaire,
                        'pseudo'      => $user['pseudo'],
                        'users_id'    => $user['id'],
                        'id_alpha_addon' => $get_id,
                        'token'       => $token,
                    ];
                    //$sql_reqCommentaire = 'INSERT INTO addon_comment (commentaire, pseudo, users_id, id_alpha_addon, token, token_reply) VALUES (:commentaire, :pseudo, :users_id, :id_alpha_addon, :token, :token_reply)';
                     $sql_reqCommentaire = 'INSERT INTO addon_comment (commentaire, pseudo, users_id, id_alpha_addon, token) VALUES (:commentaire, :pseudo, :users_id, :id_alpha_addon, :token)';   
                    $req_reqCommentaire = $pdo->prepare($sql_reqCommentaire);
                    $req_reqCommentaire->execute($datas) or die(print_r($pdo->errorInfo()));
                     
                    $last_id = $pdo->lastInsertId();
                    $success = true;
    
                 }else{
                     array_push($errors, ['commentaire', "Votre commentaire ne doit pas dépasser les 997 caractères."]);
                 } 
              }
            }
            
            /******/
            if(isset($_POST['id']) && !empty($_POST['reply_form'])) //GET ID POST
            {
    
                if($_SERVER["REQUEST_METHOD"] == "POST")
                {
                 $reply = trim($_POST['reply_form']);
                 $t_reply = sha1(microtime());
                 if(strlen($reply) < 1000)
                 {
                    $datasreply = [
                        'commentaire' => $reply,
                        'pseudo'      => $user['pseudo'],
                        'idusers_users'    => $user['id'],
                        'id_alpha_addon_r' => $get_id,
                        'id_addon_comment' => $last_id,
                        't_reply'          => $t_reply
                        
                    ];
                    $sql_reqReply = 'INSERT INTO comment_reply (commentaire, pseudo, idusers_users, id_addon_comment, id_alpha_addon_r, t_reply) VALUES (:commentaire, :pseudo, :idusers_users, :id_addon_comment, :id_alpha_addon_r, :t_reply)';   
                    $req_reply = $pdo->prepare($sql_reqReply);
                    $req_reply->execute($datasreply) or die(print_r($pdo->errorInfo()));
    
                    $success = true;
                 }else{
                     array_push($errors, ['reply_form', "Votre commentaire ne doit pas dépasser les 997 caractères."]);
                 } 
              }
            }
            
          }



    -
    Edité par The_alpha 2 décembre 2020 à 8:28:24

    • Partager sur Facebook
    • Partager sur Twitter
      2 décembre 2020 à 8:44:13

      Hello,

      Normalement tu aurais du faire self referencing ! En gros c'est une colonne dans la même table qui indique l'ID du parent.

      L'avantage c'est que tu peux le faire à l'infinie.

      Ton code n'est pas top car il permet beaucoup d'erreur. Tu crée $last_id dans une condition et tu l'utilises dans une autre. Ce qui fait que si pour X raisons tu ne rentres pas dans la première condition, tu n'as pas ta variable de créé et donc PHP va chercher une variable inexistante.

      Si jamais c'est une réponse, tu dois déjà avoir l'id du commentaire, donc tu devrais passer en paramètre l'ID de celui ci et l'utiliser dans ta requête.

      Tu n'as jamais de commentaire et de réponse à celui-ci en même temps.

      • Partager sur Facebook
      • Partager sur Twitter
      $2b||!$2b
        2 décembre 2020 à 9:05:19

        D'accord, je vois, Eh oui c'est logique le last_id est dans une condition c'est carrément impossible. ^^  et donc vous me conseiller de changer ma méthode ? Merci de m'avoir répondu rapidement;
        • Partager sur Facebook
        • Partager sur Twitter
          2 décembre 2020 à 13:05:14

          Avant de pouvoir t'aider correctement, j'ai besoin de comprendre un peu plus comment fonctionne ta page:

          - Peux tu me décrire le cheminement de ta page de l'écriture d'un commentaire à la réponse. (ex: Sur la page X, il y a un formulaire pour mettre un commentaire, après validation le formulaire est envoyé sur la page Y et une fois validé et insérer en BDD, l'utilisateur est redirigé vers la page Z. Pour l'utilisateur qui souhaite répondre, il clic sur un bouton au dessous du commentaire, ça lui ouvre un formulaire, etc)

          - Pourquoi tu vérifies les variables $_POST et plus bas tu vérifies que c'est en méthode POST ?

          • Partager sur Facebook
          • Partager sur Twitter
          $2b||!$2b
            6 décembre 2020 à 11:57:58

            Bonjour a toi Skuti, je m'excuse vraiment, si je vous répond que maintenant ces dernière jours j'ai pas eu le temps de me connecter, je sui vraiment désolé. du coup c'est bon j'ai pu avancé sur mon système de commentaire, j'ai réussi a régler le problème, en effet j'ai mis les réponse sur la même table comme vous l'avez dit et ca fonctionne parfaitement bien. Merci beaucoup de m'avoir aidé.

            Maintenant la je cherche comment je pourrais supprimer, le commentaire et les réponses, si par exemple un commentaire a eu des reply.

            -
            Edité par The_alpha 6 décembre 2020 à 12:00:01

            • Partager sur Facebook
            • Partager sur Twitter

            Organisation d'un système de commentaire

            × 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