如何从表中检索票数最高的候选人姓名[关闭]

Posted

技术标签:

【中文标题】如何从表中检索票数最高的候选人姓名[关闭]【英文标题】:How to retrieve the highest voted candidate name with number of votes from table [closed] 【发布时间】:2017-04-04 00:12:12 【问题描述】:

这是我的网页 php 代码。我想检索候选人的姓名和票数。但我不知道该怎么做。如您所见,我尝试了很多但没有用。我的数据库名称是选举,我的表名称是投票。在表中,我有 3 列 id、name、votes,并且只插入了三个候选人(不超过那个)。

<html>
<head>
<title>RESULT</title>
<script type="text/javascript" src="http://localhost/WTL/js/validateLogin.js">
</script>
<style type="text/css">
.btn

    border-radius:15px;
    border:solid 2px #B22222;
    padding:5px;
    width:10%;
    height:8%;
    background-color:white;
    float:center;



</style>

</head>
<body>
 <div class="header">
<img src="http://localhost/WTL/images/home2.jpg" id="home"  >
</div>
<div name="header2">
<form name="result" method="post" action="">
<Table class="tabb" align="center" >
<th>
<font size="5px" color="#B22222">RESULT</font>
</th>

   <tr><td><input type="textarea" rows="6" cols="50"   name="resultDisplay" placeholder="click result to check the result" class="textarea"></td></tr>
        </table>
        <center><div name="header3" class="last"><input type="submit" name="sub" value="RESULT" onclick="validate();" class="btn" ></div></center>
</form>
</div>
</body>
</html>
<?php
session_start();
$display= "";

if(isset($_REQUEST['sub']))

$db = mysqli_connect("localhost","root","","election");
if($db->connect_error)

    die("connection failed".$db->connect_error);

   
else

    $sql="SELECT name,votes FROM cr
        WHERE votes = (SELECT Max(votes) FROM cr)";
    $res=mysqli_query($db,$sql);
    //$name=$res['name'];
    //$votes=$res['votes'];
    echo '<textarea>', $res , '</textarea>';
    //$display .= '<div>'.$name.' '.$votes.'</div>';
   

?>

【问题讨论】:

“救命!紧急” - 哦,我明白了。顺便说一句,您不能使用 $res 查询的“回声”。 你为什么不按票数降序排列,限制为 1? SELECT name,votes FROM cr ORDER BY votes DESC LIMIT 1 - 更清楚一点。 您需要“循环”成功的结果。你不能只是echo $res 那样。您需要whileforeach。这一切都在这个php.net/manual/en/mysqli.query.php的手册中,网上也有很多教程。 你也很有可能在标题之前输出 session_start(); 的位置 - 这应该高于输出,错误报告会触发标题发送警告 php.net/manual/en/function.error-reporting.php - 如果你不是分配任何会话数组,然后您可以安全地删除它。 &lt;input type="textarea" 这也是无效的。您的代码包含太多错误。这个JS函数又在哪里validate() 【参考方案1】:

您的 sql 语法有错误。你的代码应该是这样的:

<html>
<head>
<title>RESULT</title>
<script type="text/javascript" src="http://localhost/WTL/js/validateLogin.js">
</script>
<style type="text/css">
.btn

    border-radius:15px;
    border:solid 2px #B22222;
    padding:5px;
    width:10%;
    height:8%;
    background-color:white;
    float:center;



</style>

</head>
<body>
 <div class="header">
<img src="http://localhost/WTL/images/home2.jpg" id="home"  >
</div>
<div name="header2">
<form name="result" method="post" action="">
<Table class="tabb" align="center" >
<th>
<font size="5px" color="#B22222">RESULT</font>
</th>

   <tr><td><input type="textarea" rows="6" cols="50"   name="resultDisplay" placeholder="click result to check the result" class="textarea"></td></tr>
        </table>
        <center><div name="header3" class="last"><input type="submit" name="sub" value="RESULT" onclick="validate();" class="btn" ></div></center>
</form>
</div>
</body>
</html>
<?php
$display= "";

if(isset($_REQUEST['sub']))

$db = mysqli_connect("localhost","root","","election");
if($db->connect_error)

    die("connection failed".$db->connect_error);

   
else

    $sql="SELECT name, Max(votes) as vote FROM cr group by name";
    $res=mysqli_query($db,$sql);
    //$name=$res['name'];
    //$votes=$res['votes'];
    echo '<textarea>'.$res['name'].' - '.$res['vote'].'</textarea>';
    //$display .= '<div>'.$name.' '.$votes.'</div>';
   

?>

【讨论】:

它说Cannot use of type mysqli_result as array in blah blah ... 他的 SQL 不是问题。您的示例不起作用,因为 mysqli_query() 不返回数组... 得到了输出...$sql="SELECT name,votes FROM cr WHERE votes = (SELECT Max(votes) FROM cr)"; $res=mysqli_query($db,$sql); while ($row = mysqli_fetch_array($res)) echo '';回声''。 $row['votes'] .''; 【参考方案2】:

原始问题包含许多错误,这些错误大多似乎由 cmets 对问题和其他答案进行了区分,此响应仅限于与结果显示相关的部分代码

为了得到结果,你应该使用一个循环(假设你没有错误)来访问每一行数组和正确的索引来获取每一列

 while ($row = mysqli_fetch_array($res))
    

         echo '<textarea>'. $row['name'] .'</textarea><br/>';
         echo '<textarea>'. $row['votes'] .'</textarea><br/>';
    

【讨论】:

@MagnusEriksson .. 正确 ..(我更喜欢点连接) 正如我在 cmets 中所述,他们的代码中还有很多其他错误。 @scaisEdge 恕我直言,答案不完整;它并没有完全涵盖所有错误,即使我在 cmets 中有(并且出于多种原因不想发布答案)。如果我的 cmets 碰巧消失了(这完全有可能),那么该问题的未来读者可能不会知道真正的(完整)解决方案。解决方案不应基于 cmets。 @scaisEdge 如果我的 cmets 消失了怎么办? lol!! 无论如何......我认为这是一个糟糕的问题。我喜欢你和所有人,但考虑到你的代表和经验,你应该把所有这些都放在你的答案中,而不是依赖于 cmets。 @scaisEdge 我不时删除 cmets(我可以,它们是我的 lol)。我不是要您删除答案,因为它确实解决了“直接”问题;循环(成功)结果。但是,您必须考虑未来读者的问题。他们中的一些人甚至可能是(低代表)成员,他们认为他们可以发布部分答案。这样做只会发出错误的信息。我想你可以同意我的观点。

以上是关于如何从表中检索票数最高的候选人姓名[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C语言统计候选人的得票数

华为机试-票数统计

如何从表和所有引用中删除数据? [关闭]

R从表中提取公式并在函数中使用[关闭]

SQL Columns 由其他 [关闭]

从表中删除孤立记录[关闭]