Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP生成UL LI,UL LI_Php_Html Lists_Suckerfish - Fatal编程技术网

PHP生成UL LI,UL LI

PHP生成UL LI,UL LI,php,html-lists,suckerfish,Php,Html Lists,Suckerfish,无法理解如何使用while循环生成此菜单 这是我的代码示例: <ul id="nav"> <li><a href="#">Hoofdmenu 1</a> <ul class="sub"> <li><a href="#">Submenu 1.1</a></li> <li><a href="#">Submenu 1.2</a>

无法理解如何使用while循环生成此菜单

这是我的代码示例:

<ul id="nav">
<li><a href="#">Hoofdmenu 1</a>
<ul class="sub">
        <li><a href="#">Submenu 1.1</a></li>
        <li><a href="#">Submenu 1.2</a></li>
        <li><a href="#">Submenu 1.3</a></li>
        <li><a href="#">Submenu 1.4</a></li>
    </ul>
</li>

<li><a href="#">Hoofdmenu 2</a>
    <ul class="sub">
        <li><a href="#">Submenu 2.1</a></li>
        <li><a href="#">Submenu 2.2</a></li>
        <li><a href="#">Submenu 2.3</a></li>
        <li><a href="#">Submenu 2.4</a></li>
    </ul>
</li>
</ul>
当type==id来自父菜单时,它应该是子菜单。 在我的例子中,这是有效的,现在我必须使它动态。 大脑不工作

谢谢你的帮助

用于从数据库获取数据的代码:

<ul id="nav">
<?php
include_once("ond/inc/php/connect.php");
$query = "SELECT * FROM paginas WHERE type = '0'";
$result = mysql_query($query);
while($row = mysql_fetch_object($result)){

echo '<li><a href="?ond='.$row->titel.'">'.$row->titel.'</a>';}
echo '<ul class="sub">';

$query2 = "SELECT * FROM paginas WHERE type = '".$row->id."'";
$result2 = mysql_query($query2);    
while($row2 = mysql_fetch_object($result2))
{
    echo '<li><a href="?ond='.$row2->titel.'">'.$row2->titel.'</a></li>';
}
echo '</ul>'; 
echo '</li>';

?>
</ul>

我会这样做:

$menuArray = array();

if (empty($type)) // If the entry has no "type", then it's a parent
{
    $menuArray[$type]['title'] = $title;
}
else // else, it's a child, so append it to the parent
{
    $menuArray[$type]['subitems'][] = $title;
}
首先,将数据作为数组取出,并在每个条目中循环。然后运行如下操作:

$menuArray = array();

if (empty($type)) // If the entry has no "type", then it's a parent
{
    $menuArray[$type]['title'] = $title;
}
else // else, it's a child, so append it to the parent
{
    $menuArray[$type]['subitems'][] = $title;
}
然后,使用
$menuArray
,循环遍历它以创建菜单:

?><ul id="nav"><?php
foreach ($menuArray as $item)
{
    ?><li><a href="#">$item['title']</a><?php
    ?><ul class="sub"><?php

    foreach ($item['subitems'] as $subItem)
    {
        <li><a href="#">$subItem</a></li>
    }

    ?></ul><?php
    ?></li><?php
}
?></ul><?php

?>
    在这个示例中,使用了parent\u id列和包含引用的ul li列表构建-它只进行1次sql查询并使用资源化来呈现输出,可以根据您的需要简单地更改此代码

            <?php
     /**
      * Module for displaying data from items table
      */
    class App_Modules_Tree  extends   App_AbstractModule {
    
        /**
            * array for storing data
            *
            * @var array
            */
        private $tree = array();
           /**
            * html - output of current module
            *
            * @var string
            */
            private $output = ''; 
    
          /**
           * Retreives data from table items.
           *
           * @return void
           */
            private function _getData()
        {
            $pdo = App_Registry::get('pdo');
            $levels = array();
            foreach ($pdo->query('SELECT * FROM items ORDER BY parent_id ASC',PDO::FETCH_OBJ) as $k=>$v){
                       // references
                 $current =  &$levels[ $v->id ] ;
                     $current['parent_id'] = $v->parent_id;
                     $current['name'] = $v->name;
                     if (0 == $v->parent_id){
                     $this->tree[ $v->id ] = &$current;
                     } else {
                 $levels[$v->parent_id ]['children'][$v->id] = &$current;
                     }
            }
        }   
    
        /*
        *App_AbstractModule::preRender overriding
            * @return void
        */
        protected  function preRender()
        {
            $this->_getData();
            }
          /**
           * recursively build html output.
           *
           * @return string
           */
        private function _render($arr)
        {
            $this->output.= '<ul>';
            foreach ($arr as $k=>$v)
            {
                $this->output.= '<li>'.$v['name'].'</li>';
                if( !empty($v['children'])){
                    $this->_render($v['children']);
                }
            }
            $this->output.= '</ul>';
            return $this->output;
        }
        /*
        *App_AbstractModule::render overriding
            * @return string
        */
        protected  function render()
        {
                return $this->_render($this->tree);
        }
    
    }
    

    下一行是解决方案:

    <ul id="nav">
    <?php
    include_once("ond/inc/php/connect.php");
    $query = "SELECT * FROM paginas WHERE type = '0'";
    $result = mysql_query($query);
    while($row = mysql_fetch_object($result)){
    
    echo '<li><a href="?ond='.$row->titel.'">'.$row->titel.'</a>';
    
    $query2 = "SELECT * FROM paginas WHERE type = '".$row->id."'";
    $result2 = mysql_query($query2);    
    echo '<ul class="sub">';
    while($row2 = mysql_fetch_object($result2))
    {   
        echo '<li><a href="?ond='.$row2->titel.'">'.$row2->titel.'</a></li>';
    
    
    }
        echo '</ul>';
    echo '</li>';}
    
    
    
    ?>
    </ul>
    
    函数加载()
    {
    全球$conn;
    $query=“从子类别中选择*,其中主类别id='1';
    $result=mysqli\u查询($conn,$query);
    while($row=mysqli\u fetch\u assoc($result)){
    $cat_id=$row['sub_category_id'];
    回音“
  • ”; $query2=“从类别中选择*,其中子类别id='$cat\U id'; $result2=mysqli\u查询($conn,$query2); echo'
      ; 而($row2=mysqli\u fetch\u assoc($result2)) { 回音“
    • ”; } 回声“
    ”; 回音“
  • ”;} }
    大脑不工作?你又在消费自己的产品了吗!:)无论如何,欢迎来到SO。这需要更多信息:您使用的是什么数据库库?连接到数据库并获取记录需要什么代码?发布这些代码,人们可以给你指点怎么做。如果你还没有什么,你应该先看一本不错的PHP数据库编程教程,如果遇到困难,可以问一些具体的问题;p无论如何,我使用的是mysql数据库。我的php很不错,但我的大脑今天无法工作(酒精、大麻)@Ganjafarmer嗯,正如所说的,如果你还没有什么,你应该开始学习基本的数据库教程,例如。如果没有一个具体的问题,我在这里看不到比“为我写代码”更多的东西,这不是SO的使命和目的。佩卡你是对的,我会在一秒钟后发布我的php。酒精和大麻可能也不会帮你的忙。;-)
    function load()
    {
        global $conn;
    
    
        $query = "SELECT *  FROM sub_category WHERE main_category_id='1'";
        $result = mysqli_query($conn,$query);
        while($row = mysqli_fetch_assoc($result)){
            $cat_id=$row['sub_category_id'];
    
        echo '<li><a href="?id='.$row['sub_category_id'].'">'.$row['sub_category_name'].'</a>';
    
        $query2 = "SELECT *  FROM categories WHERE sub_category_id='$cat_id'";
        $result2 = mysqli_query($conn,$query2);    
        echo '<ul class="sub">';
        while($row2 = mysqli_fetch_assoc($result2))
        {   
            echo '<li><a href="?id='.$row2['category_id'].'">'.$row2['category_name'].'</a></li>';
    
    
        }
            echo '</ul>';
        echo '</li>';}
    
    
    }