Problème requête SQL
Résolu
gahmed
Messages postés
71
Date d'inscription
Statut
Membre
Dernière intervention
-
gahmed Messages postés 71 Date d'inscription Statut Membre Dernière intervention -
gahmed Messages postés 71 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde,
Je suis entrain de développer une messagerie instantanée avec php-mysql j'ai rencontré un problème sur une de mes requêtes SQL. Voici les structures de mes tables dont la requête doit utiliser:
membres (pseudo,prenom,nom) et connaitre (#mem_pseudo,#pseudo)
Voici la requête:
$pseudo est une variable session
Cette requête me permet d'afficher tous les amis d'un membre qui est connecté
Maintenant le problème est qu'il y a un des membres qui est ami à tous les autres membres tel n'est pas le cas dans ma base de données
Je suis entrain de développer une messagerie instantanée avec php-mysql j'ai rencontré un problème sur une de mes requêtes SQL. Voici les structures de mes tables dont la requête doit utiliser:
membres (pseudo,prenom,nom) et connaitre (#mem_pseudo,#pseudo)
Voici la requête:
$query="select distinct m.pseudo,prenom,nom from membres m, connaitre c where c.pseudo='$pseudo' and c.mem_pseudo=m.pseudo or c.pseudo=m.pseudo "; $result = mysql_query($query) or die(mysql_error());
$pseudo est une variable session
Cette requête me permet d'afficher tous les amis d'un membre qui est connecté
Maintenant le problème est qu'il y a un des membres qui est ami à tous les autres membres tel n'est pas le cas dans ma base de données
A voir également:
- Problème requête SQL
- Logiciel sql - Télécharger - Bases de données
- Sql lister les tables ✓ - Forum Programmation
- Requête bloquée par le pare-feu applicatif claranet webfence ✓ - Forum Réseaux sociaux
- Jointure sql ✓ - Forum MySQL
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
7 réponses
biensur que la requête affiche tous les amis d'un membre qui est connecté mais le problème est qu'il y a un des membres qui est ami à tous les autres membres tel n'est pas le cas pour certains membres dans ma base de données
Voici les enregistrements de ma table membres
biba02 Khaditia Diagn
faicha Aissatou Samb
faicha86 Aicha Samb
gahmed Ahmad Diem
et voici les enregistrements de ma table connaitre
biba02 faicha
biba02 gahmed
D'après ces enregistrements biba02 est ami qu'avec faicha et gahmed mais lorsque je regarde la liste des amis de faicha86 j'y trouve biba02.
C'est ça mon problème
biba02 Khaditia Diagn
faicha Aissatou Samb
faicha86 Aicha Samb
gahmed Ahmad Diem
et voici les enregistrements de ma table connaitre
biba02 faicha
biba02 gahmed
D'après ces enregistrements biba02 est ami qu'avec faicha et gahmed mais lorsque je regarde la liste des amis de faicha86 j'y trouve biba02.
C'est ça mon problème
Dans la table connaitre "mem_pseudo" correspond on membre qui a choisit pour ami "pseudo".
Il faut selectionner tout les membres dans la table membres qui existe lorseque mem_pseudo=$pseudo :
Si c'est l'inverse (mem_pseudo correspond à l'ami et non à celui qui a choisit) il faut inverser c.mem_pseudo et c.pseudo.
J'espère que c'est ce que tu veux :)
Il faut selectionner tout les membres dans la table membres qui existe lorseque mem_pseudo=$pseudo :
SELECT DINSTINCT m.pseudo, prenom, nom FROM membres AS m, connaitre AS c WHERE c.mem_pseudo='$pseudo' AND m.pseudo=c.pseudo;
Si c'est l'inverse (mem_pseudo correspond à l'ami et non à celui qui a choisit) il faut inverser c.mem_pseudo et c.pseudo.
J'espère que c'est ce que tu veux :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
il faut prendre en compte les deux sens car sur la table connaitre on peut le lire de deux manières:
- "mem_pseudo" a choisi pour ami "pseudo"
-"pseudo" a choisi pour ami "mem_pseudo"
Ce qui va donner pour la requête:
Merci beaucoup Defouille de ton aide
- "mem_pseudo" a choisi pour ami "pseudo"
-"pseudo" a choisi pour ami "mem_pseudo"
Ce qui va donner pour la requête:
SELECT DINSTINCT m.pseudo, prenom, nom FROM membres AS m, connaitre AS c WHERE c.mem_pseudo='$pseudo' AND m.pseudo=c.pseudo OR c.pseudo='$pseudo' AND m.pseudo=c.mem_pseudo;
Merci beaucoup Defouille de ton aide
si on lit dans un sens il y'a un problème car l'amitié ne s'affichera que chez un seul membre ce qui n'est pas normal. Je m'explique :
"mem_pseudo" correspond on membre qui a choisit pour ami "pseudo" voici sa requête
Voici les enregistrements de ma table membres
biba02 Khaditia Diagn
faicha Aissatou Samb
faicha86 Aicha Samb
gahmed Ahmad Diem
et voici les enregistrements de ma table connaitre
biba02 faicha
biba02 gahmed
avec ces enregeristrements quand biba02 se connecte il verra qu'il est ami avec gahmed et faicha.
Mais quand gahmed se connecte il ne verra pas sur la liste de ses amis biba02 c'est pourquoi j'ai ajouté ça sur la requête
OR c.pseudo='$pseudo' AND m.pseudo=c.mem_pseudo
"mem_pseudo" correspond on membre qui a choisit pour ami "pseudo" voici sa requête
SELECT DINSTINCT m.pseudo, prenom, nom FROM membres AS m, connaitre AS c WHERE c.mem_pseudo='$pseudo' AND m.pseudo=c.pseudo
Voici les enregistrements de ma table membres
biba02 Khaditia Diagn
faicha Aissatou Samb
faicha86 Aicha Samb
gahmed Ahmad Diem
et voici les enregistrements de ma table connaitre
biba02 faicha
biba02 gahmed
avec ces enregeristrements quand biba02 se connecte il verra qu'il est ami avec gahmed et faicha.
Mais quand gahmed se connecte il ne verra pas sur la liste de ses amis biba02 c'est pourquoi j'ai ajouté ça sur la requête
OR c.pseudo='$pseudo' AND m.pseudo=c.mem_pseudo