【问题标题】:Populate HTML table from MYSQL and counting rows从 MYSQL 填充 HTML 表并计算行数
【发布时间】:2013-03-27 02:09:08
【问题描述】:

我正在尝试用 mysql 数据填充 HTML 表,我在 Mysql 中有以下数据:

ID, IP, Referal

我想创建一个表格来显示引用列表以及它们出现的频率,例如:

ID,    IP,      Referal
1     1.1.1.1   google.com
2     2.2.2.2   google.com
3     3.3.3.3   test.com
4     4.4.4.4   another.com

应该输出:

google.com     2
test.com       1
another.com    1

我试过的是这样的:

<table class="table table-bordered table-primary">
<tbody>
<?php
$sql="SELECT * FROM traffic";
$result=mysql_query($sql);
?>
<?php while($row = mysql_fetch_array($result)) { ?>
<tr >
<td class="tc"><font face="Arial, Helvetica, sans-serif"><?php if($row['referal']==''){
echo "Empty Referal";
} else { echo $row['referal']; }?></font></td>

<td class="tc"><center><font face="Arial, Helvetica, sans-serif"><?php $referal = $row['referal'];
$sql="SELECT COUNT(*) FROM traffic WHERE referal = $referal";
$num_rows = mysql_num_rows($result);

echo "$num_rows";

?></font></center></td>

</tr>
                    <?php } ?>
            </tbody>
        </table>

但这并没有单独计算每个引用,即使引用相同,它也会为每个条目创建一个新的表行。

非常感谢任何帮助。

【问题讨论】:

  • 你能用这个 print_r($result); 打印你从查询中得到的输出吗?

标签: php mysql


【解决方案1】:

您可能正在寻找 SQL 的 GROUP BY 关键字:

SELECT Referal, COUNT(*) FROM traffic GROUP BY Referal

这将为您提供您想要的表格,而无需在 php 中进行任何额外的 for 循环

【讨论】:

    【解决方案2】:

    问题是您正在收集在上次查询中找到的行数,而不是您的计数查询:

    $sql="SELECT COUNT(*) FROM traffic WHERE referal = '$referal'";
    $num_rows = mysql_num_rows($result);
    

    首先,COUNT 命令将返回单行,单列包含找到的计数。您应该使用以下内容:

    $sql="SELECT COUNT(*) as count FROM traffic WHERE referal = '$referal'";
    $numResult = mysql_fetch_array(mysql_query($sql));
    $num_rows = $numResult['count'];
    

    此外,您不需要在要回显的变量周围加上引号。这样就足够了:

    echo $num_rows; //NOT echo "$num_rows";
    

    注意:不要使用 MySQL_* 函数,因为它们自 PHP 5.5 起已被弃用。请改用 MySQLi_* 或 PDO。

    【讨论】:

    • 谢谢,这很好用。它现在对计数进行相应的分组。尽管我仍然有一个问题,即它为每个条目创建一个新的表行,即使它是同一个引用。如果您能提示我正确的方向,将不胜感激!
    • GROUP BYReferal 将那一个排序出来,不幸的是我不能接受 2 个答案 :(
    • 您可以使用@Misch 建议的查询作为主要查询或使用DISTINCT 命令获取不同的推荐
    猜你喜欢
    • 1970-01-01
    • 2018-07-26
    • 2018-04-13
    • 1970-01-01
    • 2011-08-16
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多