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>
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']
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 ...
É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
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.
Tutoriel complet MySQL !