我已经看了很长时间这段代码,并且没有看到问题在哪里..
function getComment($topic_id){
$sql = "SELECT * FROM comment WHERE topic_id='$topic_id' ORDER BY time DESC LIMIT 20";
$result = mysql_query($sql);
//the "id of the comment willl be used in maing the like box"
while($output = mysql_fetch_assoc($result)){
$qry = "SELECT username, avatar2 FROM user WHERE user_id='".$output['user_id']."'";
$rst = mysql_query($qry);
$out = mysql_fetch_assoc($rst);
$disp = '
<div class="tmain">
<h3 class="underlinebold">Topic Title<span class="not_left">
<ul>
<li><i class="icon-time" style="margin-top:5px;"></i>time: '. getTime($output["time"]) .' ago</li>
<li><i class="icon-pencil" style="margin-top:5px;"></i>Edit</li>
<li><span class="badge badge-inverse">#2</span></li>
</ul>
</span></h3>
<div class="postWrap">
<div class="userInfo">
<ul>
<li><img src="'. $out["avatar2"] .'" /></li>
<li>'. $out["username"] .'</li>
<li>'. commentNo($output["user_id"]) .'</li>
</ul>
</div>
<div class="comment">
<div class="commentText">'.
$output["content"].'</div>
<ul class="below">
<li><i class="icon-flag" style="margin-top:3px;"> </i>Report</li>
<li><i class="icon-edit" style="margin-top:3px;"> </i>Quote</li>
<li><i class="icon-thumbs-down" style="margin-top:3px;"> </i>Mtcheew...(<span>0</span>)</li>
<li><i class="icon-thumbs-up" style="margin-top:3px;"> </i>Correct!(<span>0</span>)</li>
</ul>
</div>
</div>
</div>
';
return $disp;
}
}
代码是假设得到与特定主题相关的所有评论并在主题页面上显示它们..但它只显示最后发布的代码而没有别的..我不知道我在哪里弄错了..
你可以在这里看到效果test forum所以,如果你们能帮忙的话,请你们好。
答案 0 :(得分:4)
每次循环时,它都会用当前行替换$disp
的值。你需要附加它们而不是替换,即
$disp .= '<div class="tmain"> ... </div>';
^
此外,return $disp;
语句需要在外部 while
循环。你在循环的第一次迭代中返回。
而不是对每个用户名/头像进行单独查询,您应该在主查询中使用连接执行此操作:
SELECT c.*, u.username, u.avatar
FROM comment c
JOIN user u ON u.user_id = c.user_id
WHERE topic_id = '$topic_id'
ORDER BY time DESC
LIMIT 20