首页 > 解决方案 > 如何在php的echo语句中使用条件运算符

问题描述

我的数据库中有一个名为的表posts。它由 7 列post_id, user_id, username, posted_date, posted_time, am_or_pm&组成likes。我想在点赞按钮旁边显示没有点赞。如果喜欢的次数是 1,我想显示 1 个喜欢,如果超过 1,那么我想显示为n喜欢,其中 n 大于 1,这是我的 php 代码

$dbposts=DB::query('SELECT * FROM posts WHERE user_id=:user_id ORDER BY post_id DESC',array(':user_id'=>$user_id));
$posts="";
  foreach($dbposts as $p){
  $post_id=$p['post_id'];
    $posts=htmlspecialchars($p['body']);
    $posted_date=$p['posted_date'];
    $posted_time=$p['posted_time'];
    $am_or_pm=$p['am_or_pm'];
    $likes=$p['likes'];
    if(!DB::query('SELECT post_id FROM post_likes WHERE post_id=:post_id AND user_id=:user_id',array(':post_id'=>$post_id,':user_id'=>$friend_id))){
    echo '<span id="user-name">'.$first_name.'&nbsp;'.$last_name.'</span> posted on <span id="posted-date">'.$posted_date.'</span> at <span id="posted-time">'.$posted_time.'&nbsp;'.$am_or_pm.' </span> <br> <span id="post">'.$posts.'</span>
    <form  method="post" action="Users_Profile.php?username='.$username.'&post_id='.
                                        $post_id.'">
      <button id="like-button" name="like_button" class="btn btn-primary" type="submit"> Like <i class="fas fa-thumbs-up"></i> </button> <span>'.$likes.' likes </span>
    </form><hr>';
  }
    else{
    echo '<span id="user-name">'.$first_name.'&nbsp;'.$last_name.'</span> posted on <span id="posted-date">'.$posted_date.'</span> at <span id="posted-time">'.$posted_time.'&nbsp;'.$am_or_pm.' </span> <br> <span id="post">'.$posts.'</span>
    <form  method="post" action="Users_Profile.php?username='.$username.'&post_id='.
                                        $post_id.'">
      <button id="unlike-button" name="unlike_button" class="btn btn-primary" type="submit"> Unlike <i class="fas fa-thumbs-down"></i> </button> <span>'.$likes.' likes </span>
        </form><hr>';
    }
}

这是显示问题的图像

在此处输入图像描述

我想显示 1 个喜欢和不喜欢。请帮忙

标签: php

解决方案


在您的 foreach 循环中,您可以添加一个变量来计算“like”或“likes”值,$likes如下所示:

// Using ternary expression
$likeOrLikes = $likes === 1 ? 'like' : 'likes';

然后在特定span元素中,您可以这样做:

'/* ... */ <span>'.$likes.' '.$likeOrLikes.' </span> /* ... */'

在我结束我的答案之前,请注意上面的答案是为了与你的编码风格保持一致。您的代码有很大的优化空间和可读性,但这是另一天的问题。


推荐阅读