2014-04-12 2 views
0

내 페이지의 팔로우 시스템에서 작업 중이므로 사용자가 따르는 사용자의 게시물 만 표시해야합니다. 나는 user1_iduser2_id을 포함하는 테이블 follow을 가지고있다. ID가 34 인 사용자가 ID가 45 인 사용자를 추적하면 해당 테이블에 저장됩니다. 그래서 내가 필요한 것은 누군가가 따르고 다른 테이블에서 자신의 게시물을 찾는 모든 사용자 ID를 선택하는 것입니다.두 테이블의 데이터를 결합하는 PHP의 MySQL 쿼리

$id = $_SESSION['user_id']; 
$follow_query = mysql_query("SELECT user_two_id FROM follow WHERE user_one_id=$id"); 
while($follow_array = mysql_fetch_array($follow_query)){ 

$sql = mysql_query('SELECT home FROM `matches` WHERE `u_id` IN (' . implode(',',array_map('intval', $follow_array)) . ')'); 
$sql_array = mysql_fetch_array($sql);} 

하지만이 작동하지 않습니다 : 나는 SELECT * FROM table1 WHERE u_id=[users id-s that they follow]. 이미 이런 식으로 뭔가를하려고합니다 몇 가지 명령을해야합니다.

follow table

그것은 33이 내가 보여줄 필요가 데이터가 저장되어있는 테이블 사용자 (34)와 사용자 (35)

을 따르고 해당 사용자를 보여주는 것 :

은 다음과 테이블입니다 :

other table

그러나 나는 그가 따를 것을 사용자 만 게시물을 사용자를 표시해야합니다 ID 34 및 35

+2

덤프 내파은 (',', array_map() $ follow_array, 'INTVAL') 그래서 우리는 값을 알고 - 어떤 – Eric

+0

거짓없는'$ follow_query' 경우에도 오류가 무엇입니까? –

답변

0

으로 2 개의 쿼리를 재 그룹화하여 처리를 MySQL에 맡겨야합니다.

$id = $_SESSION['user_id']; 
$offset = ($pn - 1) * $itemsPerPage; 

$query = sprintf("SELECT home, u_id FROM matches m 
    JOIN follow f ON m.u_id = f.user_two_id 
    WHERE f.user_one_id = '%d' 
    AND m.date > DATE_SUB(NOW(), INTERVAL 1 WEEK) 
    ORDER BY m_id DESC 
    LIMIT %d,%d", $id, $offset, $itemsPerPage); 

$result = mysql_query($query); 

if (!$result) { 
    $message = 'Invalid query : ' . mysql_error() . "\n"; 
    $message .= 'Whole query: : ' . $query; 
    die($message); 
} 

while ($row = mysql_fetch_assoc($result)) { 
    echo $row['home']; 
    echo $row['u_id']; 
} 

mysql_free_result($result); 
+0

어떻게 든 m_id DESC에 의해 date> DATE_SUB (NOW(), INTERVAL 1 Week) 순서를 추가 할 수 있습니까? – MHH

+0

물론이 질문에 대한 답을 수정했습니다. – YouMayCallMeV

+0

감사합니다,이게 효과가 있다고 생각합니다. 단지 한가지 더 .. $ limit = 'LIMIT'. ($ pn-1) * $ itemsPerPage를 포함 할 수 있습니까? ','. $ itemsPerPage; ... $ query = sprintf ("SELECT home, u_id FROM matches m JOIN이 다음과 같이 계속됩니다. m.u_id = f.user_two_id WHERE f.user_one_id = '% d' AND m. 날짜> DATE_SUB (NOW(), INTERVAL 1 주) ORDER BY m_id DESC "$ limit, $ id); – MHH

0
$id = $_SESSION['user_id']; 
#select ID of users who are following a particular user 
$follow_query = mysql_query("SELECT user_two_id FROM follow WHERE user_one_id='{$id}'"); 
#create an array in which we will contain "home" of users 
$homes = array(); 
while($follower_id = mysql_fetch_array($follow_query)){ 
    $query = mysql_query("SELECT home FROM matches WHERE u_id='{$follower_id}'"); 
    while ($home = mysql_fetch_array($follow_query)){ 
     $homes[] = $home; 
    } 
} 

변경과 사용자로부터이 경우, 보내고 : PHP 변수 주위

  • 넣고 {} 패스 쿼리.
  • 첫 번째 사용자를 따르는 사용자의 집이 현재 배열 홈에 있습니다.
+0

여기에 어떤 변화가 있습니까? –

0

$ follow_array는 사용자가 이름을 지정한 것처럼 배열입니다. 실제로 $ follow_array [ 'user_two_id']

관련 문제