友達と私による最新のステータス更新が表示されるページがあります。
関連するテーブルは、statusUpdates、users、および friends です。
必要なデータを取得するために使用したスクリプトは -
$myQuery = mysql_query("SELECT * FROM statusUpdates AS su
LEFT JOIN friends AS fr ON fr.frContactID = su.authorID
JOIN (users AS u) ON (u.roll = su.authorID)
WHERE (fr.frHostID = ".$userLoggedIn['roll']." or su.authorID = ".$userLoggedIn['roll'].")
GROUP BY su.statusID ORDER BY su.statusID DESC LIMIT 0,15");
そして、これを使用してデータを印刷しました-
if (mysql_num_rows($myQuery) == 0) echo "No updates to show";
else
{
while ($row = mysql_fetch_assoc($myQuery))
{
// Print $row['statusID'], $row['status'], $row['authorID'], $row['fullName'], $row['userProfileLink'], etc
}
}
現在、コメントシステムを組み込むことも考えています。そのために、次のフィールドを持つ新しいテーブルのコメントを作成します -commentID, targetStatusID, commentorID, comment, commentTimeStamp
各ステータス更新のコメントも次の方法で出力されるように、mysql クエリを調整するにはどうすればよいですか?
status1
- comment1
- comment2
- comment3
[text field for new comment to status1]
status2
- comment1
[text field for new comment to status2]
status3
[no comments for this post]
[text field for new comment to status3]
status4
- comment1
- comment2
[text field for new comment to status4]
[no more posts to show]
その点に注意してください -
commentIDは主キーです。 targetStatusIDは、コメントが作成された特定のステータス更新を示します。 commentorIDは、コメントした人の ID です。 コメントは実際の内容です。 commentTimeStampは、コメントが作成された時刻を示します。
ちなみに、 OOPではなく、手続き型プログラミングを使用してすべてを達成したいと思います。
これを解決する方法の 1 つは、 while 内でクエリを使用して の($row = mysql_fetch_assoc($myQuery))
コメントを選択することです$row['statusID']
。
しかし、多くの投稿を表示したい場合、クエリの数が増えます。
では、私のアプローチはどうあるべきですか?
PS 同様の質問に出くわしましたが、どの回答も私の問題を解決しませんでした。