создать treview в php на n-м уровне

0

Привет, я хочу создать treview на n-м уровне. У меня есть этот запрос

<ul  style="list-style:none;" id="MainMenu">
                    <?php 
                    $selectfolders=mysql_query("select * from tbl_folders where user_id=1");
                    while($foldername=mysql_fetch_array($selectfolders))
                    {?>
                    <li style="padding:5px;" > 
                        <?php echo $foldername['title'];?>
                        <?php 
                        $selecttasks=mysql_query("select * from tbl_tasks where project_id=$foldername[f_id] and parent_id=0");
                        $numtask=mysql_num_rows($selecttasks);
                        if($numtask>=1)
                        {
                        ?>
                        <ul id="TaskList">
                            <?php 
                            while($tasks=mysql_fetch_array($selecttasks)){
                                if($tasks['parent_id']==0)
                                {?>
                                <li><?php echo $tasks['title'];?></li>  
                            <?php }
                                else
                                {
                                ?>
                                <li><?php echo $tasks['title'];?>

 ////////////////////Here will be again new query for subtask and for next step again need to more queries///////////

       <?php $selectsubtasks=mysql_query("select * from tbl_tasks where parent_id=$tasks[t_id]");?>

                                   <ul id="SubTaskList">
                                       <?php while($subtask=mysql_fetch_array($selectsubtasks))
                                         {?>
                                        <li><?php echo $subtask['title'];?></li>
                                        <?php }?>

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

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

Этот пробег до двух уровней. но таким образом мне нужно все больше SQL-запросов. Поэтому, пожалуйста, помогите мне, как я могу создать treview на n-м уровне в простых одном или двух SQL-запросах. Будет любая простая функция, если вы можете создать, пожалуйста, помогите с благодарностью.

Теги:

1 ответ

0

Во-первых, функции "mysql_ *" довольно устарели. Вместо этого используйте PDO.

Затем подумайте об использовании возвращающих функций, чтобы выполнить результат запроса. Я считаю, что array_walk_recursive должен здесь помочь.

Запрос всех ваших данных из базы данных в одном массиве с родительской информацией (массив должен выглядеть примерно так: array( $element_id => array( 'parent' => $parent_id, $element))), а затем создайте дерево массивов, используя Информация.

Чтобы преобразовать ваш древовидный массив в список, просто используйте array_walk_recursive с пользовательским обратным вызовом.

Если я правильно помню, есть нативные функции, которые могут управлять этим делом, но на данный момент я не могу взять его в руки. Я вернусь, как только найду.

  • 0
    Невозможно изменить, чтобы добавить вторую ссылку, поэтому я публикую ее здесь: это тоже может помочь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню