我有一个菜单,其中一些页面的子页面打开下拉菜单。
我有两个SQL表:
'pages' => page_id, page_name;
'subpages' => subpage_id, page_id, page_name;
子页面与选择的父页面相同,当我通过我的表格插入它们时。
问题是,所有菜单元素都显示下拉箭头 - 甚至没有子页面的箭头。
仅在页面有子页面时才能打印一些内容?这就是我想要的:
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 } ?>