Member 13153537 Ответов: 1

Как создать уль внутри элементов Li и Li-элементы внутри элементов, ул с помощью PHP и MySQL таблицы динамически


у меня есть таблица в mysql, как показано ниже, в которой столбцы и данные являются
ID имя пользователя рефид
1 0 а
2 0 б
3 0 C
5 1 А1
6 5 АА
7 5 АВ
8 6 А1
9 6 А2
10 1 А2
11 1 А3
12 2 B1
13 2 B2
14 3 С1
15 3 С2

то, что я хочу, это использовать рекурсивную функцию php добавить элементы ul li и элементы li ul динамически, как создать такие данные.пожалуйста, помогите мне заранее спасибо.

  • Один

    • А1

      • AA

        • А1
        • А2

      • AB

    • А2
    • А3

  • Б

    • В1
    • B2

  • С

    • С1
    • С2



Что я уже пробовал:

я пробовал эту функцию, она работает не так, как ожидалось .она добавляет пустой ul пустой для каждого дочернего элемента внутри, как это предотвратить . пожалуйста, помогите мне заранее спасибо.
<?php

mysql_connect('localhost','root','');

mysql_select_db("test");

function submenu($parentid=0){
    $sql=mysql_query("SELECT * FROM test WHERE refid=".$parentid);
    {
      //echo '<ul>';
            while($row=mysql_fetch_array($sql))
            {
              if(mysql_num_rows($sql)>0)
              {
                echo '<ul>';
              $sql1=mysql_query("SELECT * FROM test WHERE refid=".$row['id']);
              if(mysql_num_rows($sql1)>0 && $row['refid']==0)
              {

              //echo '<li><a href="'.$row['userdefined'].'">'.$row['name'].'</a>';
                echo '<li class="limain">'.$row['name'];
                 //echo '<li><a href="'.$row['userdefined'].'">'.$row['name'].'</a>';
              submenu($row['id']);
              echo '</li>';
              //echo '<ul>';
            }
              else{
               //echo '<ul>';
               echo '<li class="lichild"><a href="'.$row['userdefined'].'">'.$row['name'].'</a>';
               submenu($row['id']);
               echo '</li>';
            }
          }

          echo '</ul>';
      }

    }
  }

submenu();

 ?>

1 Ответов

Рейтинг:
10

EZW

function submenu($parentid = 0)
{
    $sql = mysql_query("SELECT * FROM test WHERE refid=" . $parentid);

    echo '<ul>';

    while($row = mysql_fetch_assoc($sql))
    {
        if($row['refid'] == 0)
        {
            echo '<li>';
            echo $row['name'];
            submenu($row['id']);
            echo '</li>';
        }
        else
        {
            echo '<li>';
            echo "<a href=\"{$row['userdefined']}\">{$row['name']}</a>";
            submenu($row['id']);
            echo '</li>';
        }
    }

    echo '</ul>';
}

submenu();

Хотя я рекомендую вам отойти от этих mysql_functions и преобразовать ваш код в PDO, поскольку эти функции устарели с версии 5.5.0 и полностью удалены в PHP 7.0.0 (согласно руководству PHP)


Member 13153537

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

EZW

Вы имеете в виду дизайн каждого дочернего UL по-разному в CSS?

Member 13153537

да с помощью css если я открою страницу в первый раз она будет показывать только родительские элементы такие как
Один
Б
С

затем я нажимаю на A он должен показывать дочерние элементы A не grand child elements
опять же, если я нажму на дочерние элементы, такие как A1, он должен показать дочерним элементам A1, как это сделать.Мне очень жаль, что я задаю каждый маленький вопрос еще и потому, что я свежее.

EZW

https://www.cssscript.com/pure-css-vertical-multi-level-navigation-menu/

У них есть то, что вы хотите. Возитесь с ним, чтобы сделать его своим (эти "has-sub" не требуются. Вы можете иметь меню с этим CSS без этих классов)

Member 13153537

спасибо, братан, за твою помощь.

Member 13153537

вместо использования hover я хочу реализовать использование click с помощью jquery или javascript how
для этого приведите мне любой пример.заранее спасибо.

EZW

Некоторые варианты я нашел в google. Вы также должны попробовать погуглить. Это все, что я делаю, чтобы найти эти варианты

https://www.jqueryscript.net/menu/Multi-level-Side-Menu-Plugin-jQuery.html

https://codyhouse.co/gem/css-multi-level-accordion-menu/

Member 13153537

хорошо спасибо за вашу помощь и поддержку

EZW

Без проблем. Кричи если что

Member 13153537

хорошо, спасибо.

я создал страницу ,используя Верхний колонтитул, меню,нижний колонтитул и содержимое.
меню загружается из базы данных.то, что я хочу, это если нажать на ссылку меню
новая форма должна отображаться между верхним и нижним колонтитулами без перезагрузки меню и страницы, как это сделать, пожалуйста, помогите мне заранее спасибо.

Member 13153537

братан, я отправил вопрос.у вас есть время, пожалуйста, проверьте один раз.