【问题标题】:Getting the number of similar rows in database and displaying them separately within a form获取数据库中相似行数并在表单中分别显示
【发布时间】:2012-03-01 10:29:40
【问题描述】:

我在数据库中有一个用户表,用户在其中将表单输入数据库。这包括多个单选按钮。我想要它,以便在相应的表单条目旁边显示类似单选按钮的数量。

有 8 种收音机可供选择,我有一个可行的解决方案,尽管这并不理想:

    mysql_select_db($database_name, $db) or die(mysql_error());

$query1 = "SELECT streamnumber, COUNT(id) FROM users WHERE streamnumber = 'Stream1' GROUP BY streamnumber ORDER BY streamnumber "; 
$result1 = mysql_query($query1) or die(mysql_error());

$query2 = "SELECT streamnumber, COUNT(id) FROM users WHERE streamnumber = 'Stream2' GROUP BY streamnumber ORDER BY streamnumber "; 
$result2 = mysql_query($query2) or die(mysql_error());

$query3 = "SELECT streamnumber, COUNT(id) FROM users WHERE streamnumber = 'Stream3' GROUP BY streamnumber ORDER BY streamnumber "; 
$result3 = mysql_query($query3) or die(mysql_error());

$query4 = "SELECT streamnumber, COUNT(id) FROM users WHERE streamnumber = 'Stream4' GROUP BY streamnumber ORDER BY streamnumber "; 
$result4 = mysql_query($query4) or die(mysql_error());

$query5 = "SELECT streamnumber, COUNT(id) FROM users WHERE streamnumber = 'Stream5' GROUP BY streamnumber ORDER BY streamnumber "; 
$result5 = mysql_query($query5) or die(mysql_error());

$query6 = "SELECT streamnumber, COUNT(id) FROM users WHERE streamnumber = 'Stream6' GROUP BY streamnumber ORDER BY streamnumber "; 
$result6 = mysql_query($query6) or die(mysql_error());

我已经对每个单选按钮进行了单独的查询,然后使用这个逻辑来显示信息:

    <?php 
    while($row = mysql_fetch_array($result1)){

                    echo "There are ". $row['COUNT(id)'] ." ". $row['streamnumber'] ." items.";
                    echo "<br />";


        } ?>
<input style="width:5px;" type="radio" name="streamnumber" value="Stream1" id="StreamDates_0">  
<label>Stream 1 - Module 1 + 2 - 21st - 23rd March, Module 3 - 19th - 20th April, Module 4 - 15th - 16th May 4</label>

这样我可以使用每个计数和名称,因为查询指定了流编号。我想知道是否有更简单的方法可以做到这一点?我认为这将与更复杂的数组有关,但我不能完全确定它。

【问题讨论】:

    标签: mysql arrays forms


    【解决方案1】:

    你不能只运行 1 个查询吗?

    $query = "SELECT streamnumber, COUNT(id) AS cnt FROM users 
     WHERE streamnumber IN ('Stream1', 'Stream2', 'Stream3',
     'Stream4', 'Stream5', 'Stream6') 
     GROUP BY streamnumber ORDER BY streamnumber "; 
    $result = mysql_query($query) or die(mysql_error());
    $my_array=array();
    while($row = mysql_fetch_array($result1))
    {
      $my_array[$row["streamnumber"]] = $row["cnt"];
    }
    // now $my_array["Stream1"] contains count of 'Stream1' 
    

    【讨论】:

    • 是的,我之前只有一个查询,但是当在 while 循环中回显结果时,我无法指定从哪个 Streamnumber 获取名称或计数。它只是在列表中呼应它,而不是在我希望显示位的表单中的特定点......这有意义吗?
    • @JamesG:我认为即使您需要在不同的地方访问结果,最好只查询一次服务器。执行查询后,您可以遍历它并存储在数组中(键 - 流数,值 - 计数)。然后你可以在你的代码中像$my_array["Stream4"]一样访问它,而无需发送额外的请求
    • 是的,键值对的想法正是我所追求的,谢谢。我将如何从数组 [“Stream4”] 访问值(计数)?非常感谢:)
    • 喜欢...$my_array["Stream4"][count]?
    • @JamesG :我更新了我的答案并添加了一个示例(请注意COUNT(id) AS cnt 在查询中)。希望有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    • 2018-07-26
    相关资源
    最近更新 更多