2012-04-12 13 views
0

私はソーシャルネットワークを作成しています。私はユーザーが人を購読できるようにしたい。理論的には、ユーザが購読ボタンをクリックすると、PHPはそのユーザのIDをMYSQLのリストの "subscribed-to"列に追加します。今、私はニュースフィードスタイルのホームページを持っていたい。私が知りたいのは、PHPで「サブスクライブした」データをプルすると、ユーザが購読している人の投稿(MYSQLのテーブルにもある)のみを表示するにはどうしたらよいですか?PHP配列からMYSQLデータを選択

+0

関連するテーブルのスキーマを表示できますか? –

答えて

1

使用UNIONは、すべてのユーザーIDの現在のユーザーIDに基づいて、フォローしたい得るために「IN」句を使用し、その後、別のテーブルからすべての記事を結合する:

例:

$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_fetch_arrayスルークエリを実行する場合は()には、このようなものを返します:

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' type、body、date FROM wall WHERE userID IN ($ userFavs) ORDER BY日付DESC "); ' –

+0

うん。それは動作します。正しいインデックスとキャッシュを使用してください。それ以外の場合は、おそらく非常に遅いクエリになります。 – Moe

0

あなたはserializeあなたの配列をDBで探していると思います。 Thisも同様に役立つかもしれません!

関連する問題