Php 获取类别中的获取子类别
我要做的是下一步。获取所有我的菜单类别并显示它们,然后获取每个特殊类别的所有子类别,并显示它们。我希望你能理解我的意思。我迷失在代码中,现在不知道该怎么做。这是我的代码,希望你能帮助我 下面是表格结构 子类别表 |id |子类别|名称| id |类别| 类别表 |id |类别| id\u类别与类别表中的id连接Php 获取类别中的获取子类别,php,html,mysql,pdo,Php,Html,Mysql,Pdo,我要做的是下一步。获取所有我的菜单类别并显示它们,然后获取每个特殊类别的所有子类别,并显示它们。我希望你能理解我的意思。我迷失在代码中,现在不知道该怎么做。这是我的代码,希望你能帮助我 下面是表格结构 子类别表 |id |子类别|名称| id |类别| 类别表 |id |类别| id\u类别与类别表中的id连接 <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul c
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-left">
<?php
$pdo = connect();
$sql = "SELECT * FROM category";
$query = $pdo->prepare($sql);
$query->execute();
$row = $query->fetchAll();
foreach ($row as $rs) { ?>
<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><?php echo $rs['category'] ?><span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<?php
$sql = "SELECT subcategory.subcategory_name, subcategory.id_category, category.id, category.category
FROM subcategory
INNER JOIN category
WHERE subcategory.id_category = category.category";
$query = $pdo->prepare($sql);
$query->execute();
$subcat = $query->fetchAll();
foreach ($subcat as $sub) { ?>
<li><a href="#"><?php echo $sub['subcategory_name'] ?></a></li>
<?php } ?>
</ul>
</li>
<?php } ?>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="includes/logout.php">Logout</a></li>
</ul>
</div><!-- /.navbar-collapse -->
</div>
-
我想您只是不理解内部的JOIN sql select语句。您必须声明第二个表与第一个表的关系:
SELECT column_list
FROM t1
INNER JOIN t2 ON join_condition1
WHERE where_conditions;
将条件连接到要将“subcategory.id\u category=category.category”部分放入查询的位置。也许可以省略实际的WHERE子句?
希望能有帮助。
看
编辑:
我的建议是重写完整的代码,在一个查询中完成。但您的代码可以通过在第一个sql查询中使用已捕获的变量快速简化如下:
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-left">
<?php
$pdo = connect();
$sql = "SELECT * FROM category";
$query = $pdo->prepare($sql);
$query->execute();
$row = $query->fetchAll(PDO::FETCH_ASSOC);
foreach ($row as $rs) { ?>
<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><?php echo $rs['category'] ?><span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<?php
$sql = "SELECT subcategory_name, id_category
FROM subcategory
WHERE id_category = '".$rs['id']."'";
$query = $pdo->prepare($sql);
$query->execute();
$subcat = $query->fetchAll(PDO::FETCH_ASSOC);
foreach ($subcat as $sub) { ?>
<li><a href="#"><?php echo $sub['subcategory_name'] ?></a></li>
<?php } ?>
</ul>
</li>
<?php } ?>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="includes/logout.php">Logout</a></li>
</ul>
</div><!-- /.navbar-collapse -->
</div>
-
我想您只是不理解内部的JOIN sql select语句。您必须声明第二个表与第一个表的关系:
SELECT column_list
FROM t1
INNER JOIN t2 ON join_condition1
WHERE where_conditions;
将条件连接到要将“subcategory.id\u category=category.category”部分放入查询的位置。也许可以省略实际的WHERE子句?
希望能有帮助。
看
编辑:
我的建议是重写完整的代码,在一个查询中完成。但您的代码可以通过在第一个sql查询中使用已捕获的变量快速简化如下:
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-left">
<?php
$pdo = connect();
$sql = "SELECT * FROM category";
$query = $pdo->prepare($sql);
$query->execute();
$row = $query->fetchAll(PDO::FETCH_ASSOC);
foreach ($row as $rs) { ?>
<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><?php echo $rs['category'] ?><span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<?php
$sql = "SELECT subcategory_name, id_category
FROM subcategory
WHERE id_category = '".$rs['id']."'";
$query = $pdo->prepare($sql);
$query->execute();
$subcat = $query->fetchAll(PDO::FETCH_ASSOC);
foreach ($subcat as $sub) { ?>
<li><a href="#"><?php echo $sub['subcategory_name'] ?></a></li>
<?php } ?>
</ul>
</li>
<?php } ?>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="includes/logout.php">Logout</a></li>
</ul>
</div><!-- /.navbar-collapse -->
</div>
-
如果没有问题,你能编辑我的代码吗?我正在努力,但没能成功。它可以这样工作吗?谢谢,它看起来很有希望,但仍然不起作用,没有错误,它只是不显示我编辑过的子类别,所以可能需要将行作为关联数组,这可能就是问题所在。如果不是,则可能不是SQL问题(?)Well仍然不工作,同样的事情。没有错误,只是不显示任何内容。一切看起来都很好,查询工作也很好,问题还可能出在哪里…我看不出有什么问题吗?你们能展示一下你们的表结构吗?您是舒尔的
子类别.id\u类别
匹配类别.category
?它可能是category.id
?这将使循环中的WHERE
子句如下:whereid_category='“$rs['id']”";代码>如果没有问题,您可以编辑我的代码吗?我正在努力,但没能成功。它可以这样工作吗?谢谢,它看起来很有希望,但仍然不起作用,没有错误,它只是不显示我编辑过的子类别,所以可能需要将行作为关联数组,这可能就是问题所在。如果不是,则可能不是SQL问题(?)Well仍然不工作,同样的事情。没有错误,只是不显示任何内容。一切看起来都很好,查询工作也很好,问题还可能出在哪里…我看不出有什么问题吗?你们能展示一下你们的表结构吗?您是舒尔的子类别.id\u类别
匹配类别.category
?它可能是category.id
?这将使循环中的WHERE
子句如下:WHERE id_category='“$rs['id']”;