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

时间:2016-12-07 19:44:47

标签: php html css mysql forms

我正在运行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次,那么人们选择选项3获得208票,第三名获得选项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的新手,所以欢迎任何帮助

知道怎么做吗?

1 个答案:

答案 0 :(得分:1)

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

阅读评论非常重要,首先看看我的数据库图片enter image description here

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

他们选择选项1,两次

并且他们只选择选项3一次,

所以选项2是赢得3票,选项1是第二名2票,选项3是第三名一票

所以您的显示应该如下所示

选项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排序它们,如果我不订购它们,它很好,但我必须对结果进行排序,这就是我现在订购它们的原因。

如果您在localhost中运行此查询,您将获得此结果 enter image description here

因为你可以很好地对我们的结果进行排序,所以现在我们必须考虑我们的显示消息。

我正在使用数组来显示结果

显示结果,而不是明白地键入它我正在使用数组,declration

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

我使用数组的原因,因为它使我的工作更容易,因为你可以看到第一个值是winner with,而不是第二个with,第三个是with,尝试改变第二个和第三个值,有些东西比如亚军或第三个,你的显示也会改变。

现在提取并显示

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

我正在使用&nbsp;创建另一个空间,如果您不明白,其他人将会理解,此部分正在执行的操作$declration[$i++],更改原始$declration中的值数组,你将能够理解,

并且此消息非常重要,您的代码可以通过sql注入,请进行研究或观看视频,

任何困惑让我知道