Partage
  • Partager sur Facebook
  • Partager sur Twitter

Affichage resultat d'un SELECT avec JOIN

    21 janvier 2018 à 19:26:27

    Salut à tous.

    Voilà j'ai un systeme de news dans lequel on peut ajouter des commentaires...

    Le but est donc affiché chaque news avec les 3 derniers commentaires de chaque news.

    J'ai donc procédé à un SELECT avec un JOIN car mes 2 tables ont en commun le id_loisirs mais j'avoue je patauge, voici ma requete:

    $sql = 'SELECT * FROM `loisirs`  JOIN comment ON comment.id_loisirs = loisirs.id_loisirs WHERE loisirs.date_fin_sortie >= NOW() AND loisirs.valide = 1 AND id_type_loisirs <> 1 ';
    while($ligne = $req->fetch(PDO::FETCH_ASSOC)){  
    
    
      echo '<article>              
          <div class="control-block-button post-control-button">
              <a href="voir.php?id='.$ligne["id_loisirs"].'" class="btn btn-control"><i class="icon_set_1_icon-85"></i></a>
              <a href="#" class="btn btn-control"><i class="icon_set_1_icon-88"></i></a>
              </div> 
              <div class="post__author author vcard inline-items">
              <img src="../img/avatar2.jpg" alt="author">
              <div class="author-date">
              <a class="h6 post__author-name fn" href="../'.simplification($ligne["titre"]).'/'.$ligne["id_loisirs"].'.html" title="'.ucfirst(strtolower($ligne['titre'])).' en '.ucfirst(strtolower($aLoisirs[$ligne["id_type_loisirs"]])).' à '.ucfirst(strtolower($ligne['city'])).'">'.ucfirst($ligne['titre']).'</a> -
              <a href="#">'.ucfirst($ligne['manufacturer']).'</a>
              <div class="post__date">
              <time class="published" datetime="2017-03-24T18:18"> '.$ligne['date_debut_sortie'].' à '.str_replace(':', 'H',$ligne['horaire']).'</time>
              </div>
              </div>
              </div>
                            
             <div class="post-video">
             	<div class="video-thumb"><img class="img-responsive post-img" src="'.$ligne['photo'].'" alt="'.ucfirst(strtolower($ligne['titre'])).'" title="'.strtolower($ligne['titre']).' - '.ucfirst(strtolower($ligne['city'])).'"></div>
           <div class="video-content">
            <p>'. ucfirst(strtolower(stripslashes(cutTexte($ligne['description'], 180, '...')))).'</p>
           </div>
             </div>
         
             <div> 
         	<a href="#" class="MaClasse"><i class="icon_set_1_icon-85"></i> Commentaires</a>
           <div class="commentaires">
             <form method="post">
               <textarea name="contenu"></textarea>
               <input type="hidden" name="pseudo" value="'. $_SESSION['membre']['pseudo'].'">
               <input type="hidden" name="id_simply_user" value="'.$_SESSION['membre']['id_simply_user'].'">
               <input type="hidden" name="id_loisirs" value="'.$ligne["id_loisirs"].'">
               <button class="post-comment" type="submit">OK</button>
             </form>	
               '.$ligne["contenu"].'
         </article>';         
    		}
    

    Je n'ai mis que l'essentiel du code.

    Biensur je souhaite afficher les news même si elle n'ont pas de commentaires.

    Merci pour le coup de main

    Actuellement le code me renvoi les news autant de fois qu'il y  a de commentaires, c'est à dire que par exemple si j'ai 4 commentaires sur une news la news est affiché 4 fois et à chaque fois avec un seul commentaires....



    -
    Edité par blinz 21 janvier 2018 à 19:28:41

    • Partager sur Facebook
    • Partager sur Twitter
      21 janvier 2018 à 19:42:23

      Salut,

      Si tu veux aussi les news ou les commentaires son null. Tu dois utiliser un "INNER JOIN" plutot qu'un "JOIN"

      https://www.w3schools.com/sql/sql_join_inner.asp

      -
      Edité par mohzah 21 janvier 2018 à 19:42:48

      • Partager sur Facebook
      • Partager sur Twitter
        21 janvier 2018 à 21:04:46

        Le INNER JOIN ne prend que les valeurs ou aucune des table ne possède de ligne nulle, utilises LEFT JOIN dans ton cas
        • Partager sur Facebook
        • Partager sur Twitter
        Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

        Affichage resultat d'un SELECT avec JOIN

        × 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