表中的结果显示不正确

时间:2013-06-04 04:00:32

标签: php foreach html-table

我是PHP的新手,所以这个问题可能很愚蠢。搜索了几个小时后我找不到答案。

我使用foreach循环进行了查询,但它没有在我创建的表中正确显示。来自foreach的部分显示在最后一个国家旁边的所有区域。

我试图把它放在所有其他地方,但结果保持不变,它没有出现在右栏中。

$query = "SELECT COUNT(landofbirth) as c, landofbirth FROM dog WHERE landofbirth IS NOT NULL GROUP BY landofbirth ORDER BY c desc LIMIT 1000"; 
$result = mysql_query($query) ;
$values = array();
$pct = array();
$total = 0;

while ($line = mysql_fetch_array($result)) {
    echo "<tr><td>";
    $values[$line[1]] = $line[0];
    $total += $line[0];
    echo "$line[1]</td><td> ";

    echo "$line[0] </td><td>"; }

    foreach($values as $key => $value) {
    $pct[$key] = $value/$total ; 
    $count2 = $pct[$key] * 100;
    $count = number_format($count2, 2);
    echo "$count %"; }
    echo "</td></tr>";

1 个答案:

答案 0 :(得分:4)

你的代码有点乱码,可能是因为它移动了很多次。

我总是觉得逐个分开显示项目很有帮助,甚至将它们分别放在单独的行上,远离“计算”代码,以便在编辑代码时获得更好的视觉效果。

我不确定这是否是您正在寻找的,但我认为此显示将接近(和/或易于修改):

while ($line = mysql_fetch_array($result)) {
    $values[$line[1]] = $line[0];
    $total += $line[0];
}

foreach($values as $key => $value) {
    $pct[$key] = $value/$total ; 
    $count2 = $pct[$key] * 100;
    $count = number_format($count2, 2);

    echo '<tr>';
        echo '<td>' . $key . '</td>';
        echo '<td>' . $value . '</td>';
        echo '<td>' . $count . '%</td>';
    echo '</tr>';
}

旁注(不具体回答)
建议您不要使用PHP中不推荐使用的mysql扩展进行开发。相反,您应该使用备用和维护的mysqliPDO扩展程序。使用提供诸如预处理语句等有益功能更加安全!