2011-02-03 2 views
0

PHP 생성 테이블에 표시된 사용자의 친구를 사귀려는 소셜 네트워킹 사이트를 만들고 있습니다. 미리보기 이미지를 클릭하면 해당 사용자의 프로필로 이동하도록 미리보기 이미지와 그 아래에 다른 정보를 표시하려고합니다.친구 정보 (친구) 정보를 검색하고 친구 정보에 대한 링크가 포함 된 섬네일 목록을 검색하는 PHP 쿼리

내 사용자 테이블에는 예 :

user_id, username, user_first_name, user_last_name...etc 

는 나는 친구 테이블이 : (user1_id를, PK의 USER_ID의 FK 사용자 테이블에 user2_id 있습니다)

pal_id user1_id  user2_id  status  timestamp 
6    92   95   1  2011-02-02 21:44:58 
7    98   97   0  2011-02-02 21:44:28 
8    92   98   0  2011-02-02 21:44:28 

사진 아바타가 표시 검색됩니다 테이블. 아바타 = '1'은, 그 사용자의 아바타 인 경우 : 상기로부터

picture_id picture_url    picture_thumb_url     user_id avatar timestamp 
73 ../User_Images/66983.jpg ../User_Images/Thumbs/66983.jpg   92   1  2011-02-01 21:41:59 
74 ../User_Images/56012.jpg ../User_Images/Thumbs/56012.jpg   94   0  2011-01-25 12:09:58 

, 사용자 (92) ('1'= 상태로 도시)

user1_id 그들이 친구를 확인했기 때문에, 사용자 (95)와 친구 인 친구는 우정의 개시 자의 사용자 ID를 얻습니다. pal_id = 6 인 경우, 사용자 92는 우정을 요청했고, 95는이를 확인했습니다. 사용자 95가 우정을 요청했고 그것이 확인 되었다면 user2_id는 92를 읽었을 것입니다 ...

이제 어떻게하면 섬네일과 정보를 보여줄 PHP 쿼리를 표시 할 수 있습니까?

내 PHP 코드 : 사용자 95

$query_pal_info = "SELECT users.user_id, user_first_name, user_last_name, username, picture_thumb_url, avatar FROM users LEFT JOIN picture ON 
    users.user_id = picture.user_id 
    AND picture.avatar=1 WHERE users.user_id = {$pal_no['user2_id']}"; 

내가 현재 가지고는, 그것은 사용자 (92)의 유일한 친구를 보여줍니다과 같습니다

<?php require_once('Connections/connections.php'); ?> 
<?php 
//query username 
$user_id = $_SESSION['UserSession']; 
$user_id = mysql_real_escape_string($user_id); 
$query_user_info = "SELECT username FROM users WHERE user_id='$user_id'"; 
$user_info = mysql_query($query_user_info, $connections) or die(mysql_error()); 
$row_user_info = mysql_fetch_assoc($user_info); 

//code for displaying all your pals 
$query_pal_no = "SELECT * FROM pals WHERE (user1_id='$user_id' AND status='1') OR (user2_id='$user_id' AND status='1')"; 
$pal_no_result = mysql_query($query_pal_no, $connections) or die(mysql_error()); 
$row_pal_no = mysql_num_rows($pal_no_result); 

while ($pal_no = mysql_fetch_assoc($pal_no_result)) 
{ 
    //get pal info 
    $query_pal_info = "SELECT users.user_id, user_first_name, user_last_name, username, picture_thumb_url, avatar FROM users LEFT JOIN picture ON 
    users.user_id = picture.user_id 
    AND picture.avatar=1 WHERE users.user_id = {$pal_no['user2_id']}"; 
    $pal_info = mysql_query($query_pal_info , $connections) or die(mysql_error()); 
    $totalRows_pal_info = mysql_num_rows($pal_info); 

    //echo table with pal information 
    echo "\n<table>"; 
    $j = 5; 
    while ($row_pal_info = mysql_fetch_assoc($pal_info)) 
    { 
     if($j==5) echo "\n\t<tr>"; 
     $thumbnail_user = $row_pal_info['picture_thumb_url'] != '' ? $row_pal_info['picture_thumb_url'] : '../Style/Images/default_avatar.png'; 
     echo "<td width='100' height='100' align='center' valign='middle'><a href = 'user_view.php?user_id2={$row_pal_info['user_id']}'> 
     <img src='/NNL/User_Images/$thumbnail_user' border='0'/></a></td>\n"; 
     $j--; 
     if($j==0) { 
     echo "\n\t</tr>\n\t<tr>"; 
     $j = 5; 
     } 
    } 
    if($j!=5) echo "\n\t\t<td colspan=\"$j\"></td>\n\t</tr>"; 
    echo "\n</table>"; 
} 
?> 
<table width="500" border="0"> 
    <tr> 
    <td height="20"><div class="heading_text_18"><?php echo $row_user_info ['username']; ?>'s&nbsp;pals <?php echo $row_pal_no ?></div> </td> 
    </tr> 
    <tr> 
     <td class="interactionLinksDiv" align="right" style="border:none;"><a href="#" onclick="return false" 
     onmousedown="javascript: toggleInteractContainers('pal_requests');">Pal Requests</a></td> 
    </tr> 
    <tr> 
     <td height="5"></td> 
    </tr> 
</table> 

나는 문제가 쿼리의 WHERE 후 알고 이는 92가 시작 자이고 95가 수락 자이기 때문에 작동합니다. 쿼리가 사용자 92 (자신)을 자신의 친구로 반환하기 때문에 95가 개시자인 경우 쿼리가 작동하지 않습니다.

올바른 쿼리는 무엇입니까? 사전

+0

에 대한 미리보기 이미지 당신은 당신이 소셜 네트워킹 사이트를 만들 계획 경우, MVC 프레임 워크를 사용할 수있는 모든 palsand를 제공해야합니다. 프로 시저 프로그래밍 + 소셜 네트워킹 사이트 = 재난. – xil3

+0

머리 위로 xil3을 보내 주셔서 감사합니다. 불행히도, 나는 그것에 대해 알지 못하고 그것을 어떻게 사용하는지 모른다. 어쨌든, 그것에 대해 연구하겠습니다. u는 짧은 이점을 줄 수 있습니까, 1 또는 2 문장을주십시오 –

답변

0
SELECT * FROM users u 
INNER JOIN pal p 
ON p.user1_id = u.user_id 
INNER JOIN pictures pi 
ON pi.user_id = p.user2_id 
WHERE u.user_id = 92 

에 어떤 도움 주셔서 감사합니다 이렇게하면 사용자 ID (92)

+0

고마워요, Karthik. 그것을 시험하고 그것이 어떻게되는지 말해 보도록하겠습니다. –

+0

알겠습니다. 'code'-------------------------- $ query_pal_info = "사용자가 INNER JOIN 친구 중 한 명을 선택합니다. user1_id = users.user_id INNER JOIN 그림 ON picture.user_id = pals.user2_id \t 어디 users.user_id = '$ user_id' "; '코드'. 내가 얻는 것은 사용자 ID 95와 98 사진 모두이며, 95는 총 5, 98은 3입니다. –

+0

SELECT u1. *, pi. * FROM users u INNER JOIN pal p ON p.user1_id = u. USER_ID 내부 조인 사용자 U1 ON u1.user_id = p.user2_id INNER가 pi.user_id에서 사진 파이 가입 = p.user2_id WHERE u.user_id = 92 이 시도하시기 바랍니다 .... – Karthik