我有一个代码可以显示用户添加的帖子。帖子由名称、添加时间、帖子内容和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;
}
}
}
答案 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
。