如何显示喜欢帖子的人数

时间:2021-04-14 18:19:26

标签: php html mysql

我有一个代码可以显示用户添加的帖子。帖子由名称、添加时间、帖子内容和4个按钮组成。问题是我想在每个按钮旁边显示喜欢这篇文章的人数。我知道我必须为此创建一个新函数,但我不知道如何显示它,因为帖子是使用 foreach 循环显示的,所以如果我要创建一个新函数,我将不得不给 foreach 显示,但那可能就行不通了。有没有人对如何做到这一点有任何想法?

 <?php foreach ($tweet->userData as $user) { ?>
            <div class='col-xl-8'>
                <div class='row'>
                    <div class='btn-block d-flex justify-content-between'>
                        <div>
                           <?php  echo $user['autor']   ?>
                            </div>
                        <div>
                           <?php echo $user['date_to_add'] ?>
                            </div>
                        </div>
                    </div>
                <?php echo $user['comment'] ?>
                <form action='' method='post'>
                    <div class='row'>
                        <div class='col-12 col-xl-12 d-flex justify-content-between'>
                            <button class='button2' name='dodaj_like'><i class='fas fa-heart'></i><input type='hidden' name='like' value="<?php echo $user['id']?>" />Cool</button>
                            <button class='button2' name='dodaj_dislike'><i class='fas fa-heart-broken'></i><input type='hidden' name='dislike' value="<?php echo $user['id']?>"/>Awful</button>
                            <button class='button2' name='dodaj_comment' ><i class='far fa-comment-dots'></i><input type='hidden' name='comment' value="<?php echo $user['id']?>"/>Comment</button>
                            <button class='button2' name='dodaj_share'><i class='far fa-share-square'></i><input type='hidden' name='share' value="<?php echo $user['id']?>"/>Share</button>
                            </div>
                        </div>

public function display()
    {
        $field5 = $_GET['id'];
        $sql = $this->database->connect()->prepare("SELECT post.id, CONCAT(first_name,' ', last_name) AS autor, comment, date_to_add FROM user JOIN post ON user.id = post.user_id where user_id = :user_id group by post.id DESC");
        $sql->bindParam(':user_id',$field5, PDO::PARAM_INT);
        $sql->execute();

            if($sql->rowCount())
            {
                $this->userData = [];

                while ($row = $sql->fetch())
                {
                    $this->userData[] = $row;
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

post_like 中的查询中加入 display 表。

$sql = $this->database->connect()->prepare("
    SELECT post.id, CONCAT(first_name,' ', last_name) AS autor, comment, date_to_add,
            COUNT(*) AS likes 
    FROM user 
    JOIN post ON user.id = post.user_id 
    JOIN post_like ON post.id = post_like.post_id
    where user_id = :user_id 
    group by post.id 
    ORDER BY post.id DESC");

然后您可以在 $user['likes'] 循环中使用 foreach

相关问题