【问题标题】:Results are not showing correct in table结果在表中显示不正确
【发布时间】:2017-10-05 05:15:06
【问题描述】:

我是 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>";

【问题讨论】:

  • 似乎你应该在 foreach 循环之后完成你的 while 循环。即尝试将您的 foreach 循环放入您的 while 循环中。
  • 你需要在while循环中移动foreach
  • 如果我将 Foreach 循环放在 while 循环中,则百分比不正确,例如第一个国家 100% 显示的百分比

标签: php foreach html-table


【解决方案1】:

您的代码有点乱码,可能是因为移动了太多次。

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

我不确定这是否是您要查找的内容,但我认为此显示将很接近(和/或易于修改):

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 扩展名进行开发。相反,您应该使用替代并维护mysqli 或PDO 扩展。两者使用起来都更加安全并且提供了有益的功能,例如准备好的语句!

【讨论】:

  • 该代码有效!非常感谢,现在我也知道我做错了什么,下次知道了:)
  • 是的,这是因为到处走动,弄得一团糟。
猜你喜欢
  • 2021-10-07
  • 2019-02-11
  • 2015-10-30
  • 2017-02-19
  • 1970-01-01
  • 1970-01-01
  • 2021-04-09
  • 2014-11-30
  • 1970-01-01
相关资源
最近更新 更多