Мое содержание подкатегорий как-то выходит из 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-разметку, чтобы узнать, что не так.