gpt4 book ai didi

javascript - Bootstrap 下拉菜单与 php 和数据库

转载 作者:太空宇宙 更新时间:2023-11-04 08:02:28 25 4
gpt4 key购买 nike

我在使用 Twitter Bootstrap 时遇到下拉菜单问题。在我的数据库中,我有一个名为类别的表。其中我有 8 条记录:

ID | Category | parent
1 | Apple | 0
2 | Samsung | 0
3 | Huawei | 0
4 | Others | 0
5 | Sony | 4
6 | LG | 4
7 | Lenovo | 4
8 | Nokia | 4

通过使用这些数据,我创建了一个导航栏。但是我有这个问题:由于“其他人”有 parent ,他们出现在他们的 parent 下拉列表中。 Apple、Samsung 和 Huawei 没有任何 child ,所以我希望他们根本没有下拉菜单。但是,我的代码为这些类别生成了一个空的下拉列表。

<body>
<?php
$sql = "SELECT * FROM categories WHERE parent = 0";
$pquery = $db->query($sql);
?>
<nav class="navbar navbar-default navbar-fixed-top" id="navbar">
<div class="container">
<a href="/e-shop/index.php" class="navbar-brand" id="logo">Mobile e-shop</a>
<ul class="nav navbar-nav">
<?php while($parent = mysqli_fetch_assoc($pquery)) : ?>
<?php
$parent_id = $parent['id'];
$sql2 = "SELECT * FROM categories WHERE parent = '$parent_id' ";
$cquery = $db->query($sql2);
?>

<!-- Drop down meniu -->
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" id="text"><?php echo $parent['kategorija']; ?><span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<?php while($child = mysqli_fetch_assoc($cquery)) : ?>
<li>
/*I assume i should do if statement or something here to check is its null? I tryied to use is_null() but it did not work for me*/
<a href="<?=$child['adresas']; ?>">
<?php echo $child['kategorija'] ?>
</a>
</li>
<?php endwhile; ?>
</ul>
</li>
<?php endwhile; ?>
</ul>
</div>
</nav>

我假设我应该做 if 语句或检查它是否为 null?我尝试使用 is_null() 但它对我不起作用。

最佳答案

我看到了你的问题。您将获得没有父类的所有元素并赋予它们相同的功能,这意味着它们都被分配了一个父类。

基本上,您需要找到有 child 的 parent ,然后为他们分配正确的类(class)。像这样:

<?php
// Check if the child-query result is larger than 0
if(mysqli_num_rows($cquery) > 0) {
// Run your code for 'parents' here.
<li class="dropdown">
</li>
} else {
// Run your code for 'noparents' here.
<li class="nodropdown">
</li>
}
?>

如果我是你,我也会用干净的 PHP 代码准备语句,这样你只需在 HTML 中调用一些变量。这使您的代码更具可读性。在下面的示例中,您将数据库调用和转换代码全部放在一个地方。如果你改变一个,你可能必须改变另一个,所以这是有道理的。此外,如果其他人查看您的代码,他们会更快地理解它。

<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" id="text">
<?php echo $parent['kategorija']; ?><span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
<?php echo get_dropdown_children(); ?>
</ul>
<li>

<?php
function get_dropdown_children($parent['id']) {
$sql2 = "SELECT * FROM categories WHERE parent = '$parent_id' ";
$cquery = $db->query($sql2);
$result = "";

while($child = mysqli_fetch_assoc($cquery)) {
$result .= "<li><a href='" . $child['adresas'] . "'>"; // Opening tags
$result .= $child['kategorija']; // Content
$result .= "</a></li>"; // Closing tags
}

return $result;
}

关于javascript - Bootstrap 下拉菜单与 php 和数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46908263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com