内容来自 div PHP PDO

  • 本文关键字:PHP PDO div php html
  • 更新时间 :
  • 英文 :


我的子类别内容以某种方式脱离了div。第一个留在那里,但第二个,第三个等正在从中出来。

有什么解决方案吗?

<?php
...
$stmt = $dbh->query('SELECT parent.subcat_id, parent.subcat_name, child.subsubcat_name, child.subcat_id, child.cat_id FROM subcategories parent  JOIN subsubcategories child ON child.cat_id = parent.cat_id');
$lastcat = 0;
$stmt->execute();
$row2 = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($row2 as $row) {
    if($lastcat != $row['cat_id']){
        $lastcat = $row['cat_id'];
        echo '<div class="panel panel-default">
              <div class="panel-heading">';
        echo $row['subcat_name'];
        echo '</div><div class="panel-body">';
    }
    echo $row['subsubcat_name'];
    echo "</div></div>";
}
?>

这应该像这样重写:

$close_previous = false;    // special flag
foreach ($row2 as $row) {
    if ($lastcat != $row['cat_id']) {
        $lastcat = $row['cat_id'];
        // check whether you need to close divs from previous block
        if ($close_previous) {
            echo '</div>'; // close .panel-body 
            echo '</div>'; // close .panel-default
        } else {
            // for the first time you don't need 
            // to close divs, so here we skip it
            $close_previous = true;
        }
        echo '<div class="panel panel-default"><div class="panel-heading">';
        echo $row['subcat_name'];
        echo '</div><div class="panel-body">';
    }
    echo $row['subsubcat_name'];
    // add link
    echo '<a href="/test.php?id=' . $row['subcategoryid'] . '">Click</a>';
}
// explicitly close last divs block
echo '</div>'; // close .panel-body 
echo '</div>'; // close .panel-default

此外,检查生成的 html 标记以查看问题也是一种很好的做法。

最新更新