2012-06-20 3 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

하나의 쿼리로 단순화 할 수 있습니다. 뭔가 같은 : - 당신은 또한 "YouFanThem"에 필요하지 않습니다

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); 
} 

당신이 상호 팬이있는 곳 그에만 제한하려면, 다음은 'INNER 가입 "을"LEFT 가입 "으로 변경 반환 결과.

"SELECT *"를 무겁기 때문에 사용하지 않는 것이 좋습니다. 필요한 필드 만 선택하십시오.

마지막으로, mysql_functions가 감가 상각된다는 의무 사항이 있으므로 PDO를 대신 확인하십시오.

+0

입력 해 주셔서 감사합니다. 그래서 코드는 다음과 같이 보일 것입니다 ... – vacarsu

+0

http://pastebin.com/gNYPX1LB – vacarsu

+0

기본적으로 그렇습니다. "FriendName"을 사용하고 "friendName"을 다른 이름으로 사용했기 때문에 시청하십시오. 하지만 그걸로 시작하면 디버깅 할 수 있어야합니다. 사용자 print_r ($ row)도 디버깅을위한 각 행의 출력을 볼 수 있습니다 (SQL에 테이블에 맞게 작은 조정이 필요한 경우) – Robbie