我这里有代码,但似乎无法使其正常工作。如果没有人发布对该用户帖子的评论,我想显示“成为第一个发表评论”的消息。我的代码如下:
<?php
$comment_query = mysqli_query($con,"SELECT * ,UNIX_TIMESTAMP() - date_posted AS TimeSpent FROM comment LEFT JOIN users on users.id = comment.user_id where post_id = '$id'") or die (mysqli_error());
while ($comment_row=mysqli_fetch_array($comment_query)){
$comment_id = $comment_row['comment_id'];
$comment_by = $comment_row['name'];
if($id == $id && $comment_row['content']=""){
$beFirst = "Be the first to comment";
} else {
$beFirst = $comment_row['content'];
}
?>
<br><img src='<?= $user_form_img; ?>' height=24px width=24px align=left style="display:inline-block"/><p style="padding-left:24px;"><a href="#"><?php echo $comment_by; ?></a><br/><font style=font-size:18px;><?php echo $comment_row['content']; ?><?= $beFirst; ?>
</font><br>
<?php
$days = floor($comment_row['TimeSpent'] / (60 * 60 * 24));
$remainder = $comment_row['TimeSpent'] % (60 * 60 * 24);
$hours = floor($remainder / (60 * 60));
$remainder = $remainder % (60 * 60);
$minutes = floor($remainder / 60);
$seconds = $remainder % 60;
if($days > 0)
echo date('F d, Y - H:i:sa', $comment_row['date_posted']);
elseif($days == 0 && $hours == 0 && $minutes == 0)
echo "A few seconds ago";
elseif($days == 0 && $hours == 0)
echo $minutes.' minutes ago';
?>
非常感谢任何帮助。
答案 0 :(得分:0)
您需要替换此支票:
if($id == $id && $comment_row['content']=""){
带
if ($comment_row['content'] == '') {
因为使用$comment_row['content']=""
,所以为变量分配一个空值,在这种情况下,布尔值将为false
。 $id == $id
始终为true
。
因此if($id == $id && $comment_row['content']=""){
将被解释为if (true && false)
,并且始终为false
。
最好将变量$beFirst
命名为$commentMsg
。因为主要值将是注释的文本而不是默认文本(“成为第一个评论”)。或者只是不创建变量并使用三元运算符:
<?= ($comment_row['content'] == '') ? "Be the first to comment" : $comment_row['content'] ?>
另外,我强烈建议使用PHP PDO prepared statements来阻止SQL注入。