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   -
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:

$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


7 réponses

Defouille Messages postés 388 Date d'inscription   Statut Membre Dernière intervention   54
 
Bonjour, pourrais-tu expliquer un peu mieux ton problème et tes besoins ?
0
gahmed Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   3
 
pour un membre donné je veux avoir la requête qui permet d'afficher la liste de ces amis
0
Defouille Messages postés 388 Date d'inscription   Statut Membre Dernière intervention   54
 
Ce n'est pas ce que fait ta requête ?
"Cette requête me permet d'afficher tous les amis d'un membre qui est connecté "
0
gahmed Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   3
 
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
0
Defouille Messages postés 388 Date d'inscription   Statut Membre Dernière intervention   54
 
Désolé, je ne comprends pas...
Pourquoi le fait qu'un des membre soit ami avec tout les autre soit un problème ? Et pourquoi le fait que certains membres ne soient pas amis avec tout les autres soit un problème aussi ? '-.-

Désolé ^^, je voudrais t'aider, mais je ne te comprends pas.
0
gahmed Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   3
 
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
0
Defouille Messages postés 388 Date d'inscription   Statut Membre Dernière intervention   54
 
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 :

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 :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gahmed Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   3
 
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:

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
0
Defouille Messages postés 388 Date d'inscription   Statut Membre Dernière intervention   54
 
Si une personne choisi un ami, la personne choisi a automatiquement la personne qui l'a choisi pour ami ?
Je pense que l'idéal serait de ne lire que dans un sens.
0
gahmed Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   3
 
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
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
0
Defouille Messages postés 388 Date d'inscription   Statut Membre Dernière intervention   54
 
Je crois que j'ai compris, essaye avec :

SELECT DINSTINCT m.pseudo, prenom, nom 
FROM membres AS m, connaitre AS c 
WHERE (c.mem_pseudo='$pseudo' AND c.pseudo=m.pseudo)
OR (c.pseudo='$pseudo' AND c.mem_pseudo=m.pseudo)


On va y arriver ! :p
0
gahmed Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   3
 
c'est bon maintenant
Merci beaucoup Defouille de ton aide
0