2010-07-09 3 views
1

quand un utilisateur se connectera à son profil puis il c tous ses amis dans sa page d'accueil, j'ai 2 tables, no1: -table nom fsb_profile contenant profile_id, profile_name, etc table no2: - fsb_friendlist contenant friendlist_memberid, friendlist_friendid. maintenant, je veux montrer les détails d'ami en page d'accueil,mysql query pour afficher tous les amis dans la page d'accueil?

mon code est: -

$id=$_SESSION["_ID"]; 
$query = "select * from fsb_profile " . 
     "where fsb_profile.profile_id=(" . 
      "select fsb_friendlist.friendlist_friendid " . 
      "from fsb_friendlist " . 
      "where friendlist_memberid=" . $id . ")"; 

if($sql = mysql_query($query)) { 
    while ($t = mysql_fetch_assoc($sql)) { 
     echo "hai"; 
     echo $t["profile_name"]; 
    } 
} else { 
    echo "Something went horribly wrong.\n"; 
} 

** erreur: - ** Quelque chose a horriblement mal tourné.

+0

S'il vous plaît expliquer ce qui ne fonctionne pas. –

+0

Ceci est une réécriture de votre question précédente où les gens essayaient de vous aider à résoudre le problème: [requête PHP ne fonctionne pas ??] (http://stackoverflow.com/questions/3210559/php-query-is-not- fonctionnement). – Mike

Répondre

0

Changer votre code comme ceci:

if($sql = mysql_query($query)) { 
    while ($t = mysql_fetch_assoc($sql)) { 
     echo "hai"; 
     echo $t["profile_name"]; 
    } 
} else { 
    die(mysql_error()); 
} 

Pour voir ce qui se passait horriblement mal pour que nous puissions vous fournir une meilleure solution possible.

Assurez-vous également que vous avez mis session_start() par-dessus votre script.

+0

J'ai vérifié le session_start() son là, maintenant l'erreur est devenue Sous-requête renvoie plus de 1 ligne – mriganka3

+0

@ mriganka3: Vous ne semblez pas avoir essayé mon code pour voir l'erreur. – Sarfraz

0

Vous devez changer votre requête:

SELECT * FROM fsb_profile 
    WHERE fsb_profile.profile_id IN (
     SELECT fsb_friendlist.friendlist_friendid 
     FROM fsb_friendlist 
     WHERE friendlist_memberid = $id 
     ); 

-à-dire remplacer fsb_profile.profile_id=( avec fsb_profile.profile_id IN (

Modifier:

Je ne faisais pas attention à la requête réelle, je ne ai essayé pour corriger l'erreur que vous obtenez. La requête correcte doit être quelque chose comme:

SELECT * FROM fsb_profile 
    WHERE fsb_profile.profile_id IN (
     SELECT friendlist_memberid 
     FROM fsb_friendlist 
     WHERE friendlist_friendid = $id 
     ); 
+0

il montre le nom de profil du $ id, mais je veux montrer le nom des amis – mriganka3

+0

son montrant le nom de $ id 3 fois – mriganka3

0

Vous pouvez utiliser la requête suivante

SELECT * FROM fsb_profile WHERE fsb_profile.profile_id IN((SELECT GROUP_CONCAT() FROM fsb_friendlist WHERE friendlist_memberid=$id))