Requête SQL qui marche pas

Fermé
Cool-man - 2 févr. 2009 à 02:42
974_Vin's_974 Messages postés 547 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 19 février 2009 - 3 févr. 2009 à 08:12
Bonjour,

J'ai fais la table utilisateur_amis sql pour le module 'mes amis'

 +-----------------+----------------+
 | Utilisateur_id  |    ami_id      |  
 +-----------------+----------------+
 |          1      |        2       | 
 +-----------------+----------------+
 |          2      |        1       |
 +-----------------+----------------+
 |          3      |        2       | 
 +-----------------+----------------+
 |          3      |        6       |
 +-----------------+----------------+
 |          8      |        10      |
 +-----------------+----------------+


ce que je veux c'est affiché les amis en commun entre deux utilisateur qui sont pas forcément ami
j'ai fait la requête suivante

$recuper = mysql_query("SELECT ami_id  FROM utilisateur_ami WHERE utilisateur_id='1' AND utilisateur_id='3' GROUP BY ami_id") or die(mysql_error());

while($donne = mysql_fetch_assoc($recuper)) echo $donne['ami_id'].'<br/>';


La dans cette exemple normalement ça doit m'afficher le numéro 2, mais voila ca n'affiche RIEN (et ca me rond fout)
et quand je met un OR a la place du AND ça affiche et bien tous les amis des l'utilisateurs 3 et 1 réunis

Voila mon problème j'ai besoin d'une requête qui me donne les amis commun entre deux utilisateur.

Merci.

4 réponses

Apatik Messages postés 5304 Date d'inscription mercredi 28 janvier 2009 Statut Contributeur Dernière intervention 29 mai 2016 782
2 févr. 2009 à 08:40
C'est normal:

utilisateur_id='1' signifie que utilisateur_id!='3' donc tu ne peux pas avoir l'un ET l'autre. En effet, il s'agit de deux lignes différentes, même si la valeur est la même.
0
Merci pour la réponse Apatik,

Tu n'aurai pas une idé sur la requête qu'il faut pour avoir les amis en commun entre deux utilisateur
les amis en commun des utilisateur 1 et 3 par exemple, Merci.
0
Apatik Messages postés 5304 Date d'inscription mercredi 28 janvier 2009 Statut Contributeur Dernière intervention 29 mai 2016 782
3 févr. 2009 à 06:40
Il fait faire 2 requetes:
<?php
   $rep = mysql_fetch_array(mysql_query("SELECT ami_id FROM utilisateur_ami WHERE utilisateur_id='1'));
   $ami_commun = $rep[ami_id];
   $rep = mysql_fetch_array(mysql_query("SELECT utilisateur_id FROM utilisateur_ami WHERE ami_id=$ami));
   $ami = $rep[utilisateur_id];
   echo "L\'ami en commun de l'utilisateur 1 et de l'utilisateur $ami est l'utilisateur $ami_id";
?>

Si jamais tu as plusieurs amis associés au même utilisateurs, il faut faire une boucle:
<?php
   $rep = mysql_fetch_array(mysql_query("SELECT ami_id FROM utilisateur_ami WHERE utilisateur_id='1'));
   while ($ami_commun = $rep[ami_id])
   {
      $rep = mysql_fetch_array(mysql_query("SELECT utilisateur_id FROM utilisateur_ami WHERE ami_id=$ami));
      $ami = $rep[utilisateur_id];
      echo "L\'ami en commun de l'utilisateur 1 et de l'utilisateur $ami est l'utilisateur $ami_id";
   }
?>

C'est le matin, donc je suis pas sur à 100% du 2ème code.
0
974_Vin's_974 Messages postés 547 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 19 février 2009 102
3 févr. 2009 à 08:12
Il faut en effet faire plusieurs requetes..

Tu recherches tout d'abord l'ami de l'utilisateur 1 ..

$sql = "SELECT ami_id  FROM utilisateur_ami WHERE utilisateur_id='1'";
$resultsql = mysql_query($sql) or die('Erreur SQL! '.$sql.''.mysql_error()); // en cas d'erreure
$rep = mysql_fetch_assoc($resultsql);

$ami = $rep[ami_id]

$sql2 = "SELECT utilisateur_id  FROM utilisateur_ami WHERE ami_id='$ami'";
$resultsql2 = mysql_query($sql2) or die('Erreur SQL! '.$sql2.''.mysql_error()); // en cas d'erreure
$nb=mysql_numrows($resultsql2);//Le nombre de resultat retourné est sauvegarder


L'ami numéro $ami est ami avec $nb utilisateurs :

while ($rep2 = mysql_fetch_assoc($resultsql2))
{ 
echo $rep2['utilisateur_id'] //Affichage de tous les utilisateurs ayant pour ami le ami_id = $ami
}




Voila en espérant qu'tai compris un peu ;)


Cordialement..


0