2012-06-20 73 views
0

我有那些檢查粉絲表的代碼片段,並獲取所有粉絲的粉絲。然後它會檢查你是否也扇動了它們,如果是的話,它會顯示他們的用戶名和個人資料圖片。代碼片段顯示朋友失敗的列表?

它檢查你是否使用$ count扇動他們我假設這是它絆倒的地方。但螢火蟲沒有顯示任何錯誤。

<?php $friendlist = mysql_query("SELECT * FROM fans WHERE username='$user'") or die(mysql_error()); 
     while($row = mysql_fetch_array($result1)) { 
      $friendname = $row['fanned']; 
      $friendlist2 = mysql_query("SELECT * FROM fans WHERE username='$friendname' AND fanned='$user'") or die(mysql_error()); 
      $count = mysql_num_rows($friendlist2); 
      if($count == 1){ 
       $avatar = mysql_query("SELECT * FROM users WHERE username='$friendname'") or die(mysql_error()); 
       while($row3 = mysql_fetch_assoc($avatar)) { 
       $filename = $row3['avatar']; 
       if($filename != "") { 
          $friendpic = '<img id="headeravapic" src="profileavatars/' . $friendname . "/" . $filename . '" />'; 
         } 
         else { 
          $friendpic = '<img id="headeravapic" src="images/nopic.PNG" />'; 
         } 
     echo '<div align="center" id="onlinepic">' . $friendpic . '<p />' . $friendname . '</div>'; 
       } 
      } 
     }?> 

回答

1

您可以將其簡化爲一個查詢。喜歡的東西:

SELECT f.*, u.avatar, f2.username as YouFanThem 
    FROM fans f 
     LEFT JOIN fans f2 ON f.fanned=f2.username and f2.fanned='$user' 
     LEFT JOIN users u ON f.fanned=u.username 
    WHERE f.username='$user' 
while($row = mysql_fetch_array($result1)) { 
    $FriendName = $row['fanned']; 
    $Avatar = $row['avatar']; 
    $MutualFriend = (empty($row['YouFanThem']) ? false : true); 
} 

如果你想限制,只有那些你在哪裏相互球迷,然後將「LEFT JOIN」到「INNER JOIN」 - 那麼你也不需要「YouFanThem」在返回結果。

我也鼓勵你不要使用「SELECT *」,因爲它很重,只需選擇你需要的字段。

最後,必須注意mysql_functions正在被折舊,所以請檢查出PDO。

+0

好的,謝謝你的輸入。所以代碼看起來像這樣... – vacarsu

+0

http://pastebin.com/gNYPX1LB – vacarsu

+0

基本上,是的。請注意,因爲我已經使用「FriendName」,並且您使用了「friendName」,這將會有所不同。但從這一點開始,你應該能夠進行調試。用戶print_r($ row)也可以查看每行的輸出以進行調試(以防SQL需要進行小的調整以適應您的表) – Robbie