【问题标题】:PHP Mysql query to output a list in HTMLPHP Mysql查询以HTML格式输出列表
【发布时间】:2016-09-09 12:34:17
【问题描述】:

我知道我的问题的标题可能有点愚蠢,但我的编程和英语技能确实不是最好的。

我试图从我的 SQL 中回显一些数据,但我的一个查询总是缺少一些输出。

如果您查看表格屏幕截图,HTML 中应该还有另一行,但它没有输出。

我的问题是:脚本有时不输出所有数据的错误在哪里

    echo '<ul>';
$bestellangaben = $pdoCon->query("SELECT * FROM `bestellangaben` WHERE SeitenID = $currentSeitenID ORDER BY ID DESC");
$printline = '';
$currentGrouping = -1;
foreach ($bestellangaben as $eintrag) {
    if($currentGrouping == $eintrag['grouping']) {
        $printline = $printline . ' - ' . $eintrag['bestlellangaben'];
    }else{
        if($printline != ''){
            echo '<li>' . $printline . '</li>';
        }
        $printline = $eintrag['bestlellangaben'];
        $currentGrouping = $eintrag['grouping'];
    }
}
echo '</ul>';

数据表:

产品 187 的输出:

【问题讨论】:

  • 你错过了哪些数据?
  • 下一行或更准确地说是产品 187 的下一个列表,缺少 id 为 113 到 116 的项目
  • 这是我得到的所有输出。
  • 我添加了我的解决方案作为答案
  • 您确实应该在您的 PDO 数据库连接中使用bound parameters,而不是手动将变量插入您的 SQL,这可能非常危险。

标签: php html mysql for-loop


【解决方案1】:

我想你错过了输出最后一个$printline。当您到达与前一个数据集具有相同分组的最后一个数据集时,不再有输出。它只是将内容添加到$printline。你可以这样做:

    echo '<ul>';
$bestellangaben = $pdoCon->query("SELECT * FROM `bestellangaben` WHERE SeitenID = $currentSeitenID ORDER BY ID DESC");
$printline = '';
$currentGrouping = -1;
foreach ($bestellangaben as $eintrag) {
    if($currentGrouping == $eintrag['grouping']) {
        $printline = $printline . ' - ' . $eintrag['bestlellangaben'];
    }else{
        if($printline != ''){
            echo '<li>' . $printline . '</li>';
        }
        $printline = $eintrag['bestlellangaben'];
        $currentGrouping = $eintrag['grouping'];
    }
}

if($printline != ''){
    echo '<li>' . $printline . '</li>';
}
echo '</ul>';

【讨论】:

  • 非常感谢您!在这个问题上坐了 6 个小时...
  • 我是 stackoverflow 的新手,我不知道有多好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-26
  • 1970-01-01
相关资源
最近更新 更多