Problème requête SQL

Résolu
gahmed Messages postés 79 Statut Membre -  
gahmed Messages postés 79 Statut Membre -
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

  1. Defouille Messages postés 404 Statut Membre 54
     
    Bonjour, pourrais-tu expliquer un peu mieux ton problème et tes besoins ?
    0
  2. gahmed Messages postés 79 Statut Membre 3
     
    pour un membre donné je veux avoir la requête qui permet d'afficher la liste de ces amis
    0
    1. Defouille Messages postés 404 Statut Membre 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
  3. gahmed Messages postés 79 Statut Membre 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
    1. Defouille Messages postés 404 Statut Membre 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
  4. gahmed Messages postés 79 Statut Membre 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
    1. Defouille Messages postés 404 Statut Membre 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. gahmed Messages postés 79 Statut Membre 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
    1. Defouille Messages postés 404 Statut Membre 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
  7. gahmed Messages postés 79 Statut Membre 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
    1. Defouille Messages postés 404 Statut Membre 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
  8. gahmed Messages postés 79 Statut Membre 3
     
    c'est bon maintenant
    Merci beaucoup Defouille de ton aide
    0