Espace commentaire. [Résolu/Fermé]

Signaler
Messages postés
109
Date d'inscription
samedi 3 mai 2014
Statut
Membre
Dernière intervention
17 mars 2017
-
Messages postés
109
Date d'inscription
samedi 3 mai 2014
Statut
Membre
Dernière intervention
17 mars 2017
-
Bonjour, je suis actuellement entrain de créer un espace commentaire en dessous de chaque post que je crée. Cependant tout les posts s'affiche l'un en dessous de l'autre et donc j'ai créer une boucle while() regroupant tout les articles de ma BDD.

while($donnees_post_affichage = $req_post_affichage->fetch())
           {

           $pseudo_affichage = $donnees_post_affichage['pseudo'];
           $title_affichage = $donnees_post_affichage['title'];
           $message_affichage = $donnees_post_affichage['message'];
           $id_affichage = $donnees_post_affichage['id'];

        echo "<div class='post_affichage'>

        <div class='title_affichage'>".$id_affichage.".  ".$title_affichage."</div>

        <div class='pseudo_affichage'>  by ".$pseudo_affichage."</div>
        <div class='message_affichage'>".$message_affichage."</div>
         <div class='commentaire'>
          <FROM action='' method='POST'>
           <img src='membres/avatar/".$profile_picture."' class='commentaire_image_case'/>
           <textarea name='commentaire_case_$id_affichage' class='commentaire_case' placeholder='Ecrire un commentaire...'></textarea>
           <input type='submit' name='commentaire_envoi_$id_affichage' class='commentaire_envoi'>
          </from>
         </div>
        </div>

        ";
        }


Mais si l'utilisateur clique sur le bouton d'envoi comme c'est le même bouton pour chaque post j'ai décider d'ajouter le
 $id_affichage
comme ceci
name='commentaire_envoi_$id_affichage'
pour que chaque bouton d'envoie soit différent des autres.. Malheureusement lorsque je passe a la vérification du 'cliquage' du bouton je bloque car j'ai procéder comme cela

  if($pseudo)
      {

       if (isset($_POST["commentaire_envoi_$id_affichage"]))
       {
        echo 'coucou';
       }
      }
       


Mais ca ne fonctionne pas et je pense savoir pourquoi puisque le $id_affichage pourrait être nimporte le quel j'aimerais donc qu'il prenne en compte tout les $id_affichage et qu'il regarde le quel est le bon :) Je n'ai pas trouver comment faire c'est pour cela que je viens à vous :) Merci à ceux qui m'aideront ^^

2 réponses

Messages postés
109
Date d'inscription
samedi 3 mai 2014
Statut
Membre
Dernière intervention
17 mars 2017
5
Après de multiple essai et des recherches et de concentration surtout :p J'ai réussi ! Voici le code :)


<?php


      $sql_print_post = 'SELECT * FROM post ORDER BY id DESC';
      

      $params = array(":pseudo" => $pseudo,
          ":title" => $title,
          ":message" => $message);

      
      try 
       {

          $req_post_affichage = $bdd->prepare($sql_print_post);
          $req_post_affichage->execute($params);

       } 

      catch(Exception $e) 
       {
       
          echo "<br>ERREUR ! ".$e->getMessage()."<br>";
          echo "<br>params : <br>";
       }
        ?><script type="text/javascript">
              <!--
                  function maxlength_textarea(id, crid, max)
                  {
                      var txtarea = document.getElementById(id);
                      document.getElementById(crid).innerHTML=max-txtarea.value.length;
                      txtarea.onkeypress=function(){eval('v_maxlength("'+id+'","'+crid+'",'+max+');')};
                      txtarea.onblur=function(){eval('v_maxlength("'+id+'","'+crid+'",'+max+');')};
                      txtarea.onkeyup=function(){eval('v_maxlength("'+id+'","'+crid+'",'+max+');')};
                      txtarea.onkeydown=function(){eval('v_maxlength("'+id+'","'+crid+'",'+max+');')};
                  }
                  function v_maxlength(id, crid, max)
                  {
                      var txtarea = document.getElementById(id);
                      var crreste = document.getElementById(crid);
                      var len = txtarea.value.length;
                      if(len>max)
                      {
                          txtarea.value=txtarea.value.substr(0,max);
                      }
                      len = txtarea.value.length;
                      crreste.innerHTML=max-len;
                  }
              -->
              </script>
           





              <?php
       
      

       while($donnees_post_affichage = $req_post_affichage->fetch())
                {

                $pseudo_affichage = $donnees_post_affichage['pseudo'];
                $title_affichage = $donnees_post_affichage['title'];
                $message_affichage = $donnees_post_affichage['message'];
                $id_affichage = $donnees_post_affichage['id'];
 
          $commentaire = htmlspecialchars($_POST['commentaire_case']);
          $identification_post = htmlspecialchars($_POST['identification_post']) ;
                
               echo "<div class='post_affichage'>

               <div class='title_affichage'>".$id_affichage.".  ".$title_affichage."</div>

               <div class='pseudo_affichage'>  by ".$pseudo_affichage."</div>
               <div class='message_affichage'>".$message_affichage."</div>
                <div class='commentaire'>
                 <form action='' method='POST' name='formulaire'>
                  <img src='membres/avatar/".$profile_picture."' class='commentaire_image_case' />
                  <textarea id='textarea_1' cols='35' rows='4' name='commentaire_case' class='commentaire_case' placeholder='Ecrire un commentaire...'></textarea>
                  <div class='caracteres_limit'>Il vous reste <span id='carac_reste_textarea_1'></span> caractères.</div>
                  <br />
                  <br />
                  <button type='submit' name='commentaire_envoi' class='commentaire_envoi'>Envoyer</button>
                  <input type='hidden' name='identification_post' value='".$id_affichage."' />
                 </form>
                 <br />
                 <br />
                 <div class='affichage_commentaire'>
                 ";
                ?><script type="text/javascript">
               <!--
                   maxlength_textarea('textarea_1','carac_reste_textarea_1', 300);
               -->
           </script><?php

                $sel = 'SELECT * FROM commentaire WHERE id_post = :id_post ORDER BY id DESC';
                
                $params_coms = array(":id_post"=>$id_affichage);
                
           

          try 
           
           {

              $req_coms = $bdd->prepare($sel);
              $req_coms->execute($params_coms);
              


           } 

          catch(Exception $e) 

           {
           // en cas d'erreur
              echo "<br>ERREUR ! ".$e->getMessage()."<br>";
              echo "<br>params : <br>";
              print_r($params_coms);
              print_r($params_psd);
           }

          

           $sel_psd = 'SELECT image FROM membres WHERE pseudo = :pseudo';
           $params_psd = array(":pseudo"=>$pseudo);

           try 
           {

              $req_psd = $bdd->prepare($sel_psd);
              $req_psd->execute($params_psd);
              $donnes_psd = $req_psd->fetch();
           }
           catch(Exception $e) 

           {
           // en cas d'erreur
              echo "<br>ERREUR ! ".$e->getMessage()."<br>";
              echo "<br>params : <br>";
              print_r($params_psd);
           }

           

           $image = $donnes_psd['image'];

                  while($donnees_coms_affichage = $req_coms->fetch())
                  {

                  
                     $pseudo_com = $donnees_coms_affichage['pseudo'];
             $affichage_com = $donnees_coms_affichage['commentaires'];
             $profile_com = $donnees_coms_affichage['image'];
                      echo "
                      <img src='membres/avatar/".$profile_com."'>
                      <div class='affichage_commentaire_com'>".$affichage_com."</div>
                      <br />
                      
                     

                       ";


                  }



                  echo " </div>
                 </div>
                 </div>";
               }

     

      
        if (isset($_POST["commentaire_envoi"]))
       {

        if(!empty($_POST['commentaire_case']))
        {
         $envoi = $bdd->prepare("INSERT INTO commentaire(pseudo,commentaires,id_post,image) VALUES (?,?,?,?)");
         $envoi->execute(array($pseudo,$commentaire,$identification_post,$image));

         header("Refresh:0");
        }
       
       }
      
       

       
       
     

         
 

      

       
?>

RESOLU !! :)
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 59696 internautes nous ont dit merci ce mois-ci

Messages postés
28955
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 juillet 2020
2 617
Bonjour,
Je pense que tes boutons doivent avec tous le même nom.
Par contre, tu ajoutes pour chaque item de ta liste un champ de type input hidden dans lequel tu stockes cet ID.
Ca te permettra de savoir lequel ça concerne....


Messages postés
665
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
14 mars 2017
199
Bonjour,
Quand tu fais la requête tu récupère bien les commentaires et les poste associé ? C'est juste un problème d'affichage?
Messages postés
109
Date d'inscription
samedi 3 mai 2014
Statut
Membre
Dernière intervention
17 mars 2017
5
Salut,

Oui en fait il faudrait que chaque commentaire soit en dessous des bon posts mais pas moyen d'y arriver comme j'ai fait au dessus :/
Messages postés
665
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
14 mars 2017
199
Est ce que tu peux poster le code source html ?
Messages postés
109
Date d'inscription
samedi 3 mai 2014
Statut
Membre
Dernière intervention
17 mars 2017
5
<?php


      $sql_print_post = 'SELECT * FROM post ORDER BY id DESC';
      $sql_print_coms = 'SELECT * FROM commentaire ORDER BY id DESC';

      $params = array(":pseudo" => $pseudo,
          ":title" => $title,
          ":message" => $message);

      $params_coms = array(":id" => $id,
          ":pseudo" => $pseudo,
          ":commentaire" => $title,
          ":id_post" => $message);
      try 
       {

          $req_post_affichage = $bdd->prepare($sql_print_post);
          $req_post_affichage->execute($params);

          $req_coms_affichage = $bdd->prepare($sql_print_coms);
          $req_coms_affichage->execute($params_coms);

       } 

      catch(Exception $e) 
       {
       
          echo "<br>ERREUR ! ".$e->getMessage()."<br>";
          echo "<br>params : <br>";
       }


       while($donnees_post_affichage = $req_post_affichage->fetch())
                {

                $pseudo_affichage = $donnees_post_affichage['pseudo'];
                $title_affichage = $donnees_post_affichage['title'];
                $message_affichage = $donnees_post_affichage['message'];
                $id_affichage = $donnees_post_affichage['id'];

                $commentaire_recu = $donnees_coms_affichage['commentaire'];
                $pseudo_recu = $donnees_coms_affichage['pseudo'];
                $id_post_recu = $donnees_coms_affichage['id_post'];
               
               echo "<[/contents/242-introduction-au-dynamic-html-dhtml div] class='post_affichage'>

               <div class='title_affichage'>".$id_affichage.".  ".$title_affichage."</div>

               <div class='pseudo_affichage'>  by ".$pseudo_affichage."</div>
               <div class='message_affichage'>".$message_affichage."</div>
                <div class='commentaire'>
                 <form action='' method='POST'>
                  <img src='membres/avatar/".$profile_picture."' class='commentaire_image_case' />
                  <textarea name='commentaire_case' class='commentaire_case' placeholder='Ecrire un commentaire...'></textarea>
                  <button type='submit' name='commentaire_envoi' class='commentaire_envoi'>Envoyer</button>
                  <input type='hidden' name='identification_post' value='".$id_affichage."' />
                 </form>
                 <div class='affichage_commentaire'>
                 
                 </div>
                </div>
               </div>";

               }
        

        $commentaire = !empty($_POST['commentaire_case']) ? $_POST['commentaire_case'] : NULL;
        $identification_post = !empty($_POST['identification_post']) ? $_POST['identification_post'] : NULL;

       if (isset($_POST["commentaire_envoi"]))
       {

        if(!empty($_POST['commentaire_case']))
        {
         $envoi = $bdd->prepare("INSERT INTO commentaire(pseudo,commentaire,id_post) VALUES (?,?,?)");
         $envoi->execute(array($pseudo,$commentaire,$identification_post));
        }
       
       }
      
       
       

       
       
     

         
 

      

       
?>


Pour expliquer j'ai un formulaire de post pour créer des pots normaux , ils sont ensuite récuperer et tous retranscris dans l'ordre décroissant en bas de la page avec une boucle while sauf que il y a un espace commentaire pour chaque post avec un <input="hidden" value="$id_affichage"> cette partie marche nickel ! :)

Maintenant dans le <div class='affichage_commentaire'></div> je dois 'trouver' un code pour faire une boucle while de tous les commentaires du post avec le même ID mais je n'y arrive pas car une boucle while dans une autre ca ne veut pas /:

Le lien du site si tu souhaite voir en visuel ce que ca fait pour l'instant x) Car c'est compliquer d'expliquer ce que l'on a dans la tête ^^ https://www.hostinger.fr/free-eol?utm_source=fri&utm_medium=www&utm_campaign=free_eol
Messages postés
109
Date d'inscription
samedi 3 mai 2014
Statut
Membre
Dernière intervention
17 mars 2017
5
Up , personne ne sait ? Car dans le echo'' je ne peut pas mettre de boucle while /: Et je n'arrive pas a vérifier que le commentaire est bien sous le bon POST :(