【问题标题】:Dynamic Menu in PHPPHP中的动态菜单
【发布时间】:2015-02-19 18:02:11
【问题描述】:

我有以下页表;

+---------+------------------+-----------------------+-----------+-------+
| page_id | page_name        | page_link             | parent_id | order |
+---------+------------------+-----------------------+-----------+-------+
|       1 | Main Units       |                       |         0 |     1 |
|       2 | Add Project      | add_project.php       |         1 |     2 |
|       3 | Add Activity     | add_activity.php      |         1 |     3 |
|       4 | Add PO Reference | add_porefrence.php    |         1 |     4 |
|       5 | Department       | department.php        |         0 |     5 |
|       6 | Users            | users.php             |         0 |     6 |
|       7 | Category         | category.php          |         0 |     7 |
|       8 | Item             | item.php              |         0 |     8 |
|       9 | Units            | units.php             |         0 |     9 |
|      10 | Stock            |                       |         0 |    10 |
|      11 | Stock In         | add_inventory.php     |        10 |    11 |
|      12 | Stock Out        | inventory_issue.php   |        10 |    12 |
|      13 | Stock List       | stock_list.php        |        10 |    13 |
|      14 | Items in Stock   | item_list.php         |        10 |    14 |
|      15 | Reports          |                       |         0 |    15 |
|      16 | Stock IN         | stock_in_report.php   |        15 |    16 |
|      17 | Stock Out        | stock_out_report.php  |        15 |    17 |
|      18 | Stock Card       | stock_card_report.php |        15 |    18 |
+---------+------------------+-----------------------+-----------+-------+

以及创建下拉菜单的代码。

<div class="menu">
  <span>
    <ul id="nav">
      <li><a href="#">Main Units</a>
        <div class="subs">
          <div>
            <ul>
              <li><a href="add_project.php" style="text-decoration:none;"><h3>Add Projects</h3></a></li>
              <li><a href="add_activity.php" style="text-decoration:none;"><h3>Add Activity</h3></a></li>
              <li><a href="add_porefrence.php" style="text-decoration:none;"><h3>Add PO. Reference</h3></a></li>
            </ul>
          </div>
        </div>
      </li>
      <li><a href="department.php">Departments</a></li>
</ul>
</span>
</div>

我想从数据库创建动态菜单,我写了这段代码,但找不到子菜单何时完成循环..

  <div class="menu">
                        <span>
                          <ul id="nav">
                            <?php

                                                      ?>
                    <?php while($rows=mysql_fetch_array($SQL_FETCH_PAGES)){

                      if ($rows['page_link'] != '' & $rows['parent_id'] == 0){
                        ?>

                        <li><a href="<?php echo $rows['page_link']; ?>"><?php echo $rows['page_name']; ?></a></li>
                        <?php
                      }
                      ?>
                      else if ($rows['page_link'] == '' & $rows['parent_id'] == 0){
                      ?>
                      <li><a href="<?php echo $rows['page_link']; ?>"><?php echo $rows['page_name']; ?></a>
                        <div class="subs">
                          <div>
                            <ul>
                              <?php
                            }
                            if($rows['page_link'] != '' & $rows['parent_id'] != 0){
                            <li><a href="<?php echo $rows['page_link']; ?>"><?php echo $rows['page_name']; ?></a></li>
                          }
                          >?
                            </ul>
                          </div>
                        </div>
                      </li>
                          <?php  }
                            ?>
                              <li><a href="logoff.php">Logout</a></li>
                            </ul>
                          </span>
                        </div>

获取select * from pages order by order;的查询

【问题讨论】:

    标签: php jquery css drop-down-menu


    【解决方案1】:

    永远不要在 HTML 代码中执行 mysql 查询!如果您不使用任何类似 MVC 的结构,则在文件顶部执行此操作并缓存在某个局部变量中。

    但是,您并没有检查育儿情况。

    if($rows['page_link'] != '' & $rows['parent_id'] != 0){
    

    你应该检查你的 parent_id 是否有依赖关系,最好的方法是通过递归来做到这一点。但是,如果您的下拉菜单不超过 2 个级别,那么这段代码应该可以正常工作一段时间。

    <?php
    foreach ($rows as $row) {
        if ($row['page_link'] != '' && $row['parent_id'] == 0) {
    ?>
        <li><a href="<?php echo $row['page_link']; ?>"><?php echo $row['page_name']; ?></a></li>
    <?php
        }
        else if ($row['page_link'] == '' && $row['parent_id'] == 0) {
    ?>
        <li><a href="#"><?php echo $row['page_name']; ?></a>
        <div class="subs">
            <div>
                <ul>
                    <?php
                        foreach ($rows as $children) {
                            if ($children['parent_id'] == $row['id']) {
                                ?>
                                    <li><a href="<?php echo $children['page_link']; ?>"><?php echo $children['page_name']; ?></a></li>
                                <?php
                            }
                        }
                    ?>
                </ul>
            </div>
        </div>
    </li>
    <?php
        }
    ?>
    

    但目标是通过递归来构建菜单,而不是像上面那样。有数百个例子how to do it

    【讨论】:

      【解决方案2】:

      可能是这段代码可以帮助你。只需使用它,因为它只是替换你的数据库表名称。

      <?php $mainMenu = mysql_query("SELECT * FROM YourTable WHERE parent_id=0 ORDER BY order"); ?>
      <div class="menu">
        <span>
          <ul id="nav">
          <?php
              while($mainRes = mysql_fetch_assoc($mainMenu))
              {
          ?>
            <li><a href="#"><?php echo $mainRes['page_name']; ?></a>
              <div class="subs">
                <div>
                  <ul>
                  <?php
                      $subMenu = mysql_query("SELECT * FROM Table WHERE parent_id='".$mainRes['page_id']."' ORDER BY order");
                      while($subRes = mysql_fetch_assoc($subMenu))
                      {
                  ?>      
                    <li><a href="<?php echo $subRes['page_link']; ?>" style="text-decoration:none;"><h3><?php echo $subRes['page_name']; ?></h3></a></li>
                  <?php } ?>
                  </ul>
                </div>
              </div>
            </li>
              <?php } ?>  
      </ul>
      </span>
      </div>
      

      【讨论】:

        猜你喜欢
        • 2013-06-27
        • 2017-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多