我有一个菜单,其中某些页面包含可打开下拉菜单的子页面。
我有两个SQL表:'pages' => page_id, page_name;'subpages' => subpage_id, page_id, page_name;
当我通过表单插入子页面时,它们与所选父页面具有相同的page_id。
问题是,所有菜单元素都显示下拉箭头-甚至没有子页面的元素也是如此。
仅当页面有子页面时,才可以打印内容吗?
这就是我要的:
if pages.page_id=subpages.page_id
print
<button class="dropdown-btn">
<?php echo $page['page_name']; ?>
<i class="fa fa-caret-down"></i>
</button>
else print
<a href="#"><?php echo $page['page_name']; ?></a>
index.php:
<?php foreach ($pages as $page) { ?>
<button class="dropdown-btn">
<?php echo $page['page_name']; ?>
<i class="fa fa-caret-down"></i>
</button>
<div class="dropdown-container">
<?php foreach ($subpages as $subpage) {
if($subpage['page_id'] == $page['page_id']) {
?>
<a href="../subpage.php?id=<?php echo $subpage['subpage_id']; ?>">
<?php echo $subpage['subpage_name']; ?>
</a>
<?php } } ?>
</div>
<?php } ?>
任何帮助表示赞赏!
最佳答案
首先,我将像这样更改Subpage
类:
class Subpage {
public function fetch_all(){
global $pdo;
$query = $pdo->prepare("SELECT * FROM subpages");
$query->execute();
return $query->fetchAll();
}
// Static function: Fetch all subpages of single page
public static function fetch_all_page($page_id){
global $pdo;
$query = $pdo->prepare("SELECT * FROM subpages WHERE page_id = ?");
$query->bindValue(1, $page_id);
$query->execute();
return $query->fetchAll();
}
public function fetch_data($subpage_id) {
global $pdo;
$query = $pdo->prepare("SELECT * FROM subpages WHERE subpage_id =
?");
$query->bindValue(1, $subpage_id);
$query->execute();
return $query->fetch();
}
}
您的index.php将变为:
<?php foreach ($pages as $page) { ?>
<?php $subpages = Subpage::fetch_all_page($page['page_id']); ?>
<button class="dropdown-btn">
<?php echo $page['page_name']; ?>
<?php if (count($subpages)): ?>
<i class="fa fa-caret-down"></i>
<?php endif; ?>
</button>
<div class="dropdown-container">
<?php foreach ($subpages as $subpage): ?>
<a href="../subpage.php?id=<?php echo $subpage['subpage_id']; ?>">
<?php echo $subpage['subpage_name']; ?>
</a>
<?php endforeach; ?>
</div>
<?php } ?>