[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите сделать бесконечную последовательность
Stryker2k
Коллеги,

Вопрос больше на логику, чем на PHP.

Имеется многоуровневая цепочка (категории и подкатегории, внутри каждой подкатегории могут быть свои подкатегории).

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

user posted image

В MYSQL для каждого элемента задается номер вышестоящего над ним элемента.

Задача: вывести на экране все категории и подкатегории:
=Категория 1
== Подкатегория 2
=== Подкатегория 3
==== Подкатегория 5
==== Подкатегория 6
=== Подкатегория 4


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

Но как быть, если есть категории третьего, четвертого и т.д. уровня? Не писать же каждый раз цикл внутри цикла?

Буду благодарен за любые советы.



$data_mysql = mysql_query("SELECT * FROM table"); // ПЕРВЫЙ ЦИКЛ - ВЫВОД КАТЕГОРИЙ ПЕРВОГО УРОВНЯ

$array = mysql_fetch_array($data_mysql);

do
{
echo $array['id'];

$sub_data_mysql = mysql_query("SELECT * FROM tasks WHERE dominate_id = '$array_id'"); // ВТОРОЙ ЦИКЛ - ВЫВОД КАТЕГОРИЙ ВТОРОГО УРОВНЯ, КОТОРЫЕ ОТНОСЯТСЯ К СООТВЕТСТВУЮЩЕЙ КАТЕГОРИИ ПЕРВОГО УРОВНЯ

$sub_array = mysql_fetch_array($sub_data_mysql);
do
{
echo $sub_array['task'];
}
while ($sub_array = mysql_fetch_array($sub_data_mysql));

}
while ($array = mysql_fetch_array($data_mysql));




tatti
nested sets
Krevedko
рекурсия
Mirexzpalich

$sub_data_mysql = mysql_query("SELECT T.id, A.task FROM table as T
LEFT JOIN tasks as A WHERE A.dominate_id = T.id ORDER BY T.id"
);
$id = '';
while($row = mysql_fetch_array($sub_data_mysql)
{
if($id!=$row['id'])
{
$id=$row['id'];
echo '<hr /><br />'.$id;
}

echo '<br />'.$row['task']

}


_____________
Дорогу осилит идущий...
Stryker2k
Спасибо всем за ответы, разобрался!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.