Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de requête => jointure

    27 avril 2011 à 12:47:44

    Bonjour :)

    Voila j'ai fait un système d'amis pour mes membres, tout marche très bien, seulement je rencontre une petite difficulté.
    J'ai fait une page ou l'on peut voir tout ses amis mais j'ai un problème, cela affiche seulement les personnes qui m'ont envoyer une invitation (et que j'ai accepter) or pour si par exemple j'invite un personne, sur la liste d'amis, j'aurais mon prenom et non le prenom de mon ami qui a accepté mon invitation :'(
    Je ne m'en sort pas :'(

    J'ai 2 tables, une table users qui contient les info de membre, et une table friends qui contient id_member (personne ayant envoyer une invitation), id_friend (personne ayant reçu l'invitation), le date d'enregistrement et le statut (0=en attente, 1=accepter :) )
    Le problème ce que je fait ma jointure de table user sur la colonne id_member, donc cela affiche le nom et prénom des personnes qui ont inviter et donc quand j'invite j'ai mon nom, donc comment joindre les 2 colonne pour recupéré a cahque fois l'amis ?


    Voici donc le code qui me pose problème avec la requete :)

    <?php
        $req = $bdd->query('SELECT friends.id_member, friends.id_friend, friends.joindate, users.name, users.id, users.first_name FROM friends INNER JOIN users ON friends.id_member = users.id WHERE (id_member='.$_SESSION['id'].' OR id_friend='.$_SESSION['id'].') AND status= "1" ORDER BY joindate DESC');
     
    	$text_friend = "";
       
    	while($count = $req->fetch())
    	{
    		$id_request_member = '<div id="name_friend"><a href="profile.php?id='.$count['id_member'].'" id="link_profile_friend">'.htmlspecialchars(UcFirstAndToLower($count['first_name'])." ".UcFirstAndToLower($count['name'])).'</a></div>';
    		$text_friend .= $id_request_member;
    		$text_friend .= '<a href="remove_friend.php?id='.$count['id_member'].'" id="delete_friend"><img src="img/tiny_cross.png"></a>';
    		$text_friend .= '<div id="ligner_friend"><hr/></div>';
    	}
    	
    	if($req->rowCount() == 0)
    	{
    		$no_friend = "Sorry, you do not have any friend.";
    		echo '<div id="no_friends">'.$no_friend.'</div><a href="#" id="invite_now">Invite Friends now...</a>';
    	}
    		
    ?>
    	<div class="result_named">
    		<?php echo '<div>'.$text_friend.'</div>'; ?>
    	</div>
    


    Merci d'avance ;)
    Cordialement :)
    • Partager sur Facebook
    • Partager sur Twitter
      27 avril 2011 à 12:55:21

      SELECT users.name, users.id as id_member, users.first_name 
      FROM users
      WHERE users.id IN (
          SELECT id_member as id 
          FROM friends 
          WHERE id_friend = ...
            UNION
          SELECT id_friend as id 
          FROM friends 
          WHERE id_member = ...
      )
      


      Les ..., c'est là ou tu dois insérer $_SESSION['id']
      • Partager sur Facebook
      • Partager sur Twitter
        27 avril 2011 à 12:55:56

        J'avoue avoir du mal a comprendre ton problème ...
        Tu as fait un join pour récup les infos d'un des membres mais pas de l'autre .... Tu n'a qu'a refaire une requete avec un join cette fois ci sur l'id de l'autre membre ...
        • Partager sur Facebook
        • Partager sur Twitter
          27 avril 2011 à 13:23:34

          Salut,

          Étant donné que ce sujet concerne plus le SQL que le PHP, j'ai déplacé dans le forum approprié.

          Merci de votre compréhension :)
          GuilOooo
          • Partager sur Facebook
          • Partager sur Twitter
          J'ai déménagé sur Zeste de savoir — Ex-manager des modérateurs.

          Problème de requête => jointure

          × 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