|
Тема |
MySQL+PHP рекурсия, а само MySQL? |
|
Автор | Чaвдap (Нерегистриран) | |
Публикувано | 27.03.06 20:58 |
|
|
Здравейте,
Може ли да се предложи друго решение на следната ситуация:
Съдържание на книга записано в MySQL таблица. Съдържанието представлява имена на модули(в случая имената са имена на населени места), всеки модул може да има няколко подмодули, под-модулите могат да имат няколко под-под-модули и т.н.
Пример.
1.България
1.1. Смолян
1.1.1 Чепеларе
1.1.1.1 Забърдо
1.1.1.2 Пампорово
1.2 Варна
1.2.1 Бяла
2.Русия
3.Германия
3.1.Бавария
3.1.1 Мюнхен
3.1.1.1 Гармиш-Партенкирхен
4.Швеция
5.САЩ
5.1 Далас
5.1.1 Хюстън
7.Украйна
... и т.н Всеки модул, може да има неограничен брой подмодули.
Тези записи са организирани в една таблица със следните полета:
id – уникален пореден номер
thread – номер към, който даденият подмодул принадлежи, този номер е id-то на родителския модул.
name – име
Всеки модул в thread е записана 0, а на под-модул съответното id от родителския модул.
Ето и записите в таблицата с име „places”:
id thread name
1 0 България
2 1 Смолян
3 2 Чепеларе
4 3 Забърдо
5 3 Пампорово
6 1 Варна
7 6 Бяла
8 0 Русия
9 0 Германия
10 9 Бавария
11 10 Мюнхен
12 11 Гармиш-Партенкирхен
13 0 Швеция
И т.н
За да отпечатам имената на тези модули(да направя съдържание, както е погазано по-горе) използвам в PHP рекурсивна функция:
function thread($number)
{
$query=mysql_query(" SELECT id, name FROM `places` WHERE THREAD=$number;");
while($temp=mysql_fetch_array($query))
{
$id=$temp['id'];
$name=$temp['name'];
echo $name ;
thread($id);
}
return ;
}
За да отпечатам съдържанието извиквам функцията thread един път по следния начин:
thread(0) ;
Възможно ли е това, което правя да се реализира по друг начин със средствата на MySQL – вложени заявки, цикли или някакъв друг алгоритъм.
Предварително благодаря за отговорите.
|
| |
|
|
|