Php 获取类别中的获取子类别

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

我要做的是下一步。获取所有我的菜单类别并显示它们,然后获取每个特殊类别的所有子类别,并显示它们。我希望你能理解我的意思。我迷失在代码中,现在不知道该怎么做。这是我的代码,希望你能帮助我

下面是表格结构

子类别表

|id |子类别|名称| id |类别|

类别表

|id |类别|

id\u类别与类别表中的id连接

<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']”;