我正在使用带有评论系统的博客帖子页面创建一个社交媒体Web应用程序。在特定帖子上,我可以显示数据库中的所有行,具体取决于帖子ID。但是,如果没有与帖子ID相关的行,我想显示“无评论”的内容。如果没有任何行,我似乎无法弄清楚返回什么。
//Check if there are comments related to post via post id
function comment_exists($post_id, $conn){
$sql = "SELECT * FROM post_comments WHERE post_id='$post_id'";
$result = $conn->query($sql);
if(mysqli_num_rows($result) >= 1){
return true;
}else{
return false;
}
}
////////////////////////////////////////////////////////////
$post_id = $_GET['id'];
$sql = $conn->query("SELECT * FROM post_comments WHERE post_id = '$post_id' ORDER BY id DESC");
while($row = $sql->fetch_object()){
$comments[] = $row;
}
foreach($comments as $comment){
if(comment_exists($post_id, $conn)){
?>
<li class="list-group-item">
<div class="h6 m-0">@<?php echo "$comment->username" ?></div>
<div class="text-muted"> <i class="fa fa-clock-o mr-1"></i><?php echo "$comment->comment_time" ?></div>
<p class="card-text"><?php echo "$comment->comment" ?></p>
</li>
<?php
}else{
echo 'No comments yet';
}
}
我有2条帖子,一篇带有$ post_id = 14,带有0条评论,一篇带有$ post_id = 21,带有4条评论。
对于post_id = 21,它按预期显示4条注释。 对于post_id = 14,它将显示一个空白页面,而不是else语句中的“没有评论”
答案 0 :(得分:0)
只需检查$comments
是否为空。您无需每次都检查循环,因为如果没有注释,循环将不会运行。
if (empty($comments)) {
echo "No comments yet";
} else {
foreach ($comments as $comment) {
?>
<li class="list-group-item">
<div class="h6 m-0">@<?php echo "$comment->username" ?></div>
<div class="text-muted"> <i class="fa fa-clock-o mr-1"></i><?php echo "$comment->comment_time" ?></div>
<p class="card-text"><?php echo "$comment->comment" ?></p>
</li>
<?php
}
}