|
|
|
|
|
для: Dizels
(15.11.2007 в 11:59)
| | Ну, если не понимаете делайте без рекурсии, как вы и пытались. В этом случаи у вас будут два вложенных цикла. | |
|
|
|
|
|
|
|
для: Dizels
(15.11.2007 в 11:59)
| | Функция, которую я привел, и вернет вам массив дерева каталогов с учетом их вложения. Если вы будете из базы брать три параметра каталога, как в примере: id, название, родителя, то четвертым параметром для каталога в массиве добавляется уровень его вложения ($row[3] = $level) - для корневого это будет 0, для последующего 1, 2, 3... и т.д.
Чтобы построить то, что вы привели по ссылке, этого вполне достаточно. | |
|
|
|
|
|
|
|
для: sim5
(09.11.2007 в 06:08)
| | Может я не совсем понятно объяснил, а может чего не понял в функции которую написал sim5.
Мне нужно, чтобы при заходе на сайт(index.php) отображались главные каталоги (у которых id_parent=0) и их подкаталоги (1 вложенности). Чтобы более понятно было - посмотрите на каталог Яндекса http://yaca.yandex.ru/.
Как мне вот такое реализовать? | |
|
|
|
|
|
|
|
для: Dizels
(08.11.2007 в 22:42)
| | Рекурсивный вызов, но только почитайте сообщения от oradev, чем это грозит при большой вложенности.
<?
function listCatalog($parent,$level) {
$q = mysql_query("SELECT id, name, parent, ... FROM tableName WHERE id<>0 and parent=$parent ORDER BY fieldName") or die (mysql_error());
$a = array();
while ($row = mysql_fetch_row($q)) {
$row[3] = $level;
$a[] = $row;
$b = listCatalog($row[0],$level+1);
$a = array_merge($a, $b);
}
return $a;
}
$categories = listCatalog(0,0);
?>
|
| |
|
|
|
|
|
|
|
для: sim5
(06.11.2007 в 18:24)
| |
Например, если все каталоги в одной таблице, то paret = 0 обычно означает корневой каталог, в противном случае parent указывает на калог родителя.
|
Да так!
товары может иметь только самый нижний каталог, а его родители могут содержать только подкаталоги - это условие соотвествует вашему?
|
Нет, товар может содержаться не только в самых нижних каталогах, а и на "родителях". | |
|
|
|
|
|
|
|
для: sim5
(08.11.2007 в 11:30)
| | Я подбросил идею, а дальше автору решать ... | |
|
|
|
|
|
|
|
для: oradev
(08.11.2007 в 10:31)
| | Ну да, тока чет не верится, что у автора 50000 эелементов будет :) | |
|
|
|
|
|
|
|
для: sim5
(06.11.2007 в 04:25)
| | Поверьте sim5, когда применяя рекурсивную функцию обхода дерева из 50000 элементов ( помню эту жуткую бд металлопроката) сам по себе вывод дерева занимал минуты две. Так что я не рекомендую сразу формировать дерево. | |
|
|
|
|
|
|
|
для: Dizels
(06.11.2007 в 18:14)
| | У вас все каталоги с подкаталогами в одной таблице и как у вас описаны связи каталогов? Например, если все каталоги в одной таблице, то paret = 0 обычно означает корневой каталог, в противном случае parent указывает на калог родителя. Так у вас? И еще: товары может иметь только самый нижний каталог, а его родители могут содержать только подкаталоги - это условие соотвествует вашему? | |
|
|
|
|
|
|
|
для: morkovkin
(06.11.2007 в 17:26)
| | Такое ощущения, что в этой ветке каждый свое спрашивает и уходит:))))
Подскажите плз и мне:) Читать 1 пост! | |
|
|
|
|