2012-04-12 2 views
0

소셜 네트워크를 만들고 있습니다. 나는 사용자가 사람들을 구독 할 수있게하고 싶다. 이론적으로 사용자가 가입 버튼을 클릭하면 PHP는 해당 사용자의 ID를 MYSQL 목록의 "subscribed-to"열 아래 배열에 추가합니다. 이제 뉴스 피드 스타일 홈 페이지를 갖고 싶습니다. PHP를 통해 "subscribed-to"데이터를 가져온다면 사용자가 구독하는 사람들의 게시물 (MYSQL 테이블에도 있음) 만 표시 할 수 있습니까?PHP 배열에서 MYSQL 데이터 선택

+0

관련 테이블의 스키마를 표시 할 수 있습니까? –

답변

1

사용 UNION 후 얻을 수있는 "IN"절을 사용하는 모든 사용자 ID의 현재 사용자 ID를 기반으로 따르십시오 :

예 :

$userFavs = "SELECT userID FROM favs WHERE followerID = '#loggedinUserID#'" 

mysql_query("SELECT 'wall' as type, body, date FROM wall WHERE userID IN ($userFavs) 
UNION 
SELECT 'photo' as type, caption, date FROM photos WHERE userID IN ($userFavs) UNION... etc 
ORDER BY date DESC"); 

당신이로 MYSQL_ASSOC 통해 쿼리를 실행하면()는이 같은 것을 돌아갑니다 :

Array => { 
[0] => { type = "wall", body = "This is a wall update", date = "1234567890" }, 
[1] => { type = "photo", caption = "Us at the beach", date = "..." }, 
... 
} 

을 당신이 각 SELECT 문에서 컬럼의 동일한 금액을 가지고 있는지 확인해야 매번 "UNION"이라고 부르면 그렇지 않으면 작동하지 않습니다. 위의 type 열과 같이 위조/열 수 있습니다.

+0

오케이. 그 정보를 가져 주셔서 감사합니다. 나는 지금 기본적인 생각을 가지고 있지만 초보자입니다. 지금 내가 원하는 것은 텍스트 상태입니다. 나는 내가해야 할 일은'$ userFavs = "를 사용하는 것입니다. SELECT userID FROM favs where followerID = 'loggedinUserID #'" mysql_query ("select 'wall'from type, body, date FROM wall WHERE userID IN ($ userFavs) ORDER BY 날짜 DESC "); ' –

+0

네. 그게 효과가있다. 올바른 색인과 캐싱을 사용했는지 확인하십시오. 그렇지 않으면 매우 느린 쿼리가됩니다. – Moe

0

나는 serialize DB에 배열을 찾는 방법을 찾고 있다고 생각합니다. This도 도움이 될 수 있습니다! 다른 테이블에서 모든 게시물을 결합