gpt4 book ai didi

PHP MySQL 池显示最高投票和投票

转载 作者:行者123 更新时间:2023-11-28 23:22:19 27 4
gpt4 key购买 nike

我正在运行一个 PHP 脚本来将池保存到数据库中我的 MySQL 看起来像这样

ID    QUESTION_1
1 1 or 2 or 3 ( according to the chosen option value in number )

如果我在 QUESTION_1 中投票,我可以投票给选项 1 或 2 或 3,并且所选值的编号在 MySQL 中保存为编号 1 或 2 或 3

我需要什么

如果大多数人对选项 2 投了 348 次票,第二名的人以 208 票选择了选项 3,第三名是选项 3,我需要显示 87 票:

Option 2 winner with 348 votes
Option 3 with 208 votes
option 2 with 87 votes

我们显示获胜者以及有多少票...

我正在尝试这样做

$r['total']=0;
foreach(array(1,2,3) as $QUESTION_1){
$res=mysqli_query($datacenter, "SELECT COUNT(QUESTION_1) AS `total`
FROM `votes` WHERE `QUESTION_1` = '$QUESTION_1' ");
$tmp=mysqli_fetch_assoc($res);
$r=max($tmp['total'],$r['total']);
}


echo number_format($r,0,',','.');

但我是 PHP 的新手,所以欢迎任何帮助

知道怎么做吗?

最佳答案

你不需要太多代码,答案很长,因为我试图解释每一件事,但代码很短

这很重要,你看评论,先看看我的数据库图片enter image description here

正如你在这里看到的,人们选择了选项 2,三次

他们选择选项 1,两次

然后他们只选择选项 3 一次,

因此选项 2 以 3 票获胜,选项 1 以 2 票位居第二,选项 3 以 1 票位居第三

所以你的显示应该是这样的

选项 1 获得 3 票

选项2有2票

选项3有1票

如果到目前为止我是对的,请进一步阅读,否则请附上您的数据库图片和您的问题,然后告诉我,

解决方案 - 您不需要太多代码来执行此操作,只需使用下面的代码

$res = mysqli_query($datacenter,"SELECT   *, COUNT(QUESTION_1) as total FROM 
`votes` GROUP BY QUESTION_1 ORDER BY total DESC");
$declration = ['winner with','with','with'];
$i=0; // you dont need this line, but if you dont need this it will show you
// the index error but your code will work fine
while ($row = mysqli_fetch_assoc($res)) {
echo 'option '.'    '. $row['QUESTION_1'].'    '.
$declration[$i++].'    '. $row['total']. '    '.
'votes<br>';

}

解释-第一次查询解释

SELECT   *, COUNT(QUESTION_1) as total FROM `votes` GROUP BY QUESTION_1 ORDER BY total DESC

什么查询只是说选择每件事,而不是计算自己重复的问题_1,并按重复值的数量对它们进行排序,最后我说按总 DESC 对它们进行排序,如果我不对它们进行排序,很好,但我必须对结果进行排序,所以这就是我现在订购它们的原因。

如果您在本地主机上运行此查询,您将得到这样的结果 enter image description here

如您所见,我们的结果已经很好地排序了,所以现在想想我们必须处理我们的显示消息。

我是用数组来显示结果

显示结果,而不是直接输入它们,我使用的是数组声明

$declration = ['winner with','with','with'];

我使用数组的原因,因为它使我的工作更轻松,如您所见,第一个值是 winner with,第二个是 with,第三个是 一样,尝试改变第二和第三的值,比如 runner 或第三名,你的显示也会改变。

现在抓取和显示

echo 'option '.' &nbsp;&nbsp; '. $row['QUESTION_1'].' &nbsp;&nbsp; '. $declration[$i++].' &nbsp;&nbsp; '. $row['total']. ' &nbsp;&nbsp; '. 'votes<br>';

我使用 只是为了创建另一个空间,其他人会明白,如果你不明白,这部分是做什么的$declration[$i++], 改变我们原来的$declration数组中的值,你就会明白,

这条消息真的很重要,你的代码很容易被 sql 注入(inject),请重新搜索或观看视频,

有任何困惑请告诉我

关于PHP MySQL 池显示最高投票和投票,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41026038/

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