Partage
  • Partager sur Facebook
  • Partager sur Twitter

Classer des posts

    21 février 2017 à 20:45:15

    Bonjours à tous, je suis dans la création d'un reseau social style twitter avec un systeme de follows et tout mais lorsque j'affiche le flux, il se trie par personne qui a posté le message ! 

    Voici mon code 

          <?php         $follow1 = $bdd->query('SELECT * FROM follows WHERE id_follower="'.$_SESSION['id'].'" ');
    while ($follows = $follow1->fetch())
    {
      $msg1 = $bdd->query('SELECT * FROM messages WHERE id_poster="'.$follows["id_suivi"].'" ORDER BY id desc ');
        while ($posts = $msg1->fetch())
    {
         $auteur1 = $bdd->query('SELECT * FROM membres WHERE id="'.$posts["id_poster"].'" ORDER by "' .$posts["id"].'" desc ');
        while ($auteur = $auteur1->fetch())
    {
       
    echo'<div class="messages_afficher">
        <div class="infos_poster"><div class="image_poster"></div><div class="nom_poster">' . $auteur['pseudo'] . '</div></div>
        <div class="message_div">' . $posts["message"] . '</div>';
    }}}
    ?>

    Merci d'avance ! 

    P.S. Ma facon de le faire n'est peut-etre pas bonne !

    • Partager sur Facebook
    • Partager sur Twitter
      21 février 2017 à 21:03:57

      Un while fetch dans un while fetch dans un while fetch ...

      Renseignes toi sur les jointures de tables et ton problème sera résolu. (ne cherche pas d'autre façon de faire, ta triple boucle imbriqué est atroce)

      • Partager sur Facebook
      • Partager sur Twitter
        21 février 2017 à 21:37:11

        J'ai fait ceci : 
        <?php
                        $follow2 = $bdd->query('SELECT * FROM follows WHERE id_follower =' .$_SESSION["id"]. '');
                        while ($follow3 = $follows2->fetch())
                        {
                       $follow1 = $bdd->query('SELECT j.pseudo pseudo, p.message message
        FROM messages p
        INNER JOIN membres j
        ON j.id = p.id_poster
        WHERE p.id_poster = "' .$_SESSION["id"]. '"
        ORDER BY id DESC
        LIMIT 0, 10');
        while ($follows = $follow1->fetch())
        {
          
           
        echo'<div class="messages_afficher">
            <div class="infos_poster"><div class="image_poster"></div><div class="nom_poster">' . $follows['pseudo'] . '</div></div>
            <div class="message_div">' . $follows["message"] . '</div>';
        }
                        }
            
        
                        //On va afficher les posts
                      
        
        
        ?>

        Et il me met ces erreurs : Notice: Undefined variable: follows2 in C:\wamp\www\Reseau\index.php on line 25 ET

        Fatal error: Call to a member function fetch() on null in C:\wamp\www\Reseau\index.php on line 25




        Que dois-je faire ?

        Merci d'avance


        • Partager sur Facebook
        • Partager sur Twitter
          22 février 2017 à 14:57:04

          C'est déjà un peu mieux. Tu n'est pas limité en nombre de jointure dans une requête donc tu peux résoudre ton problème en créant une seule et unique requête. Je te conseille aussi d'utiliser PDO::PARAM_INT plutôt que de mettre directement le contenu de ta variable de session dans ta requête. Le fait de n'avoir qu'une seule requête te permettra de ne mettre qu'un seul ORDER BY pour trier comme tu le souhaite.
          • Partager sur Facebook
          • Partager sur Twitter
            22 février 2017 à 18:25:23

            Voici mon code :
             <?php
                            
                           $follow1 = $bdd->query('SELECT b.pseudo AS membre_pseudo, m.message message
            FROM messages m
            INNER JOIN membres b
            INNER JOIN follows f
            WHERE m.id_poster = f.id_suivi
            ON f.id_follower = "' .$_SESSION['id']. '"
            ORDER BY m.id DESC
            LIMIT 0, 10
            ');
            
            
            
            
            while ($follows = $follow1->fetch())
            {
              
               
            echo'<div class="messages_afficher">
                <div class="infos_poster"><div class="image_poster"></div><div class="nom_poster">' . $follows['membre_pseudo'] . '</div></div>
                <div class="message_div">' . $follows["message"] . '</div>';
            }          
            ?>

            Et voici l'erreur : 

            Fatal error: Call to a member function fetch() on boolean in 


            Que dois-je chaner ?

            Merci pour votre reponse ! +

            • Partager sur Facebook
            • Partager sur Twitter
              23 février 2017 à 10:36:49

              Il n'y a aucun lien entre ton membre dont tu cherches le pseudo et le reste de ta requête.

              • Partager sur Facebook
              • Partager sur Twitter
                23 février 2017 à 16:56:41

                Tu oeux l'aider dans le code stp car je ne comprend rien ?

                Me donner une partie du code stp ???

                • Partager sur Facebook
                • Partager sur Twitter
                  23 février 2017 à 18:40:58

                  Tu cherches à avoir le pseudo et le message des personnes que tu follow donc il te faut le lien entre le follow et toi (avec $_SESSION['id']), il faut aussi le lien entre le follow et le message mais il manque le lien entre le message et le membre pour avoir son pseudo.

                  Ton problème est un problème de base de sql. Tu dois faire l'effort ne serait ce que d'obtenir les bases par toi même sinon aller plus loin et rencontrer d'autres problèmes plus compliqués à résoudre ne te sera jamais possible.

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Classer des posts

                  × 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