gpt4 book ai didi

php - 在 jQuery upvote 插件中计算总票数

转载 作者:行者123 更新时间:2023-11-29 07:34:13 24 4
gpt4 key购买 nike

解决这个问题我真的很迷茫。目前我的项目中有一个 jQuery upvote 插件。因此,每次我单击 upvote 时,它​​都会将数据库中的值保存为 true,每次收回投票时,它都会将数据库中的值保存为 false,并将另一列中的值保存为 0。我想做的就是就像堆栈溢出一样计算总票数。即使现在我对如何解决这个问题也很困惑。我最终在 php 中编写了这段代码,这也让我的整个程序变慢了:

$sample1 = $this->db->prepare("SELECT * from Ratings WHERE TopicID = :current");
$sample1->bindParam(':current', $id);
$sample1->execute();
$RES1 = $sample1->fetchAll(PDO::FETCH_ASSOC);
$upVote = 0;

foreach ($RES1 as $mk){
if(($mk['Upvote'] === 'true') && ($mk['Downvote'] ==='false')){
$upVote++;
}
else if(( $mk['Upvote'] ==='false') && ($mk['Downvote'] === 'true')){
$upVote--;
}
else if(($mk['Upvote'] === 'false') && ($mk['Downvote'] === 'false')){
$upVote--;
}
else if(($mk['Downvote'] === 'false')){
$upVote++;
}
else if(($mk['Downvote'] === 'true') && ($mk['Upvote'] ==='0') || ($mk['Upvote'] === 'false')){
$upVote--;
}

}

我的表结构: table

最佳答案

我认为您应该在数据库端执行此操作并像这样重写您的查询:

SELECT ((SELECT COUNT(*) FROM Ratings WHERE TopicID = :current AND Upvote = true) - (SELECT COUNT(*) FROM Ratings WHERE TopicID = :current AND Downvote = true)) AS total_votes

在 PHP 端只获取 total_votes:

$sample1 = $this->db->prepare("SELECT ((SELECT COUNT(*) FROM Ratings WHERE TopicID = :current AND Upvote = true) - (SELECT COUNT(*) FROM Ratings WHERE TopicID = :current AND Downvote = true)) AS total_votes");
$sample1->bindParam(':current', $id);
$sample1->execute();
$result = $sample1->fetch();
$total_votes = $result->total_votes;

关于php - 在 jQuery upvote 插件中计算总票数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49739593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com