我知道这已经被问过几次了,但我已经尝试了这个网站上的所有答案,但仍然无处可去。
我正在尝试创建一个 twitter 类型的提要,它将循环输出帖子,然后循环输出提要中每个帖子的相关评论(类似于 Facebook)。我不确定最好的方法是两个单独的查询还是一个查询,以及如何将它全部循环出来?
我的数据库结构如下:
--TWEETS-- --COMMENTS-- --USERS--
id id id
accountno accountno accountno
userid userid email
createdat createdat name
tweet tweetid
image comment
我的PHP函数如下:
function gettweets(){
$result = mysql_query("SELECT tweets.id,tweets.tweet,tweets.createdat,tweets.userid,users.name,users.avatar,users.biog FROM tweets INNER JOIN users ON tweets.userid = users.id WHERE tweets.accountno ='123456' ORDER by tweets.ID DESC LIMIT 20");
while($row = mysql_fetch_array( $result )) {
$name = $row['name'];
$biog = $row['biog'];
$avatar = $row['avatar'];
$newtweet= $row['tweet'];
$tweetid = $row['id'];
$timeago = ago($row['createdat']);
$thistweet = '';
$thistweet .= "<div class='tweet' data-tweetid='$tweetid'>";
$thistweet .= "<div class='left'>";
$thistweet .= "<img width='45' height='45' src='$avatar' alt='placeholder+image'>";
$thistweet .= "</div><!-- / -->";
$thistweet .= "<div class='right'>";
$thistweet .= "<span class='name'>$name says</span>";
$thistweet .= "<p>";
$thistweet .= "$newtweet";
$thistweet .= "</p>";
$thistweet .= "<span class='replybar'> $timeago <a class='like' data-tweetid='$tweetid' href='' title=''>Like</a> | ";
$thistweet .= "<a class='favourite' data-tweetid='$tweetid' href='' title=''>Favourite</a> | ";
$thistweet .= "<a class='mainreply' href='' title=''>Reply</a></span>";
//I WANT TO LOOP OUT THE COMMENTS HERE
$thistweet .= "</div><!-- / --><span class='clear'></span></div><!--End Tweet -->";
return $thistweet;
}
}
**编辑* * *
我已经尝试了以下关于创建它的方式的答案,现在我成功地设法循环出“推文”以及每条推文下方的相关评论。但是我的问题是,它会循环播放我对该特定推文的每条评论的“推文”,即
tweet 1
-comment 1.1
tweet 1
-comment 1.1
-comment 1.2 (Tweet 1 has 2 comments so loops out tweet 1 two times)
tweet 2
-comment 2.1
tweet 2
-comment 2.1
-comment 2.2
tweet 2
-comment 2.1
-comment 2.2
-comment 2.3 (Tweet 2 has 3 comments so loops out tweet 2 three times)
我认为这是我的 SQL 查询的问题,因为我不熟悉使用 JOIN 语句。这是我目前的查询
"SELECT tweets.accountno, tweets.id,tweets.tweet,tweets.createdat,tweets.userid,users.name,users.avatar,users.biog,comments.comment FROM tweets INNER JOIN users ON tweets.userid = users.id JOIN comments ON tweets.id = comments.tweetid WHERE tweets.accountno ='123456' ORDER by tweets.ID DESC LIMIT 20"
有人能帮忙吗?非常感激?