X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Бесконечное дерево категорий товаров
Den1xxx
Den1xxx
Topic Starter сообщение 9.10.2011, 20:56; Ответить: Den1xxx
Сообщение #1


Делаю бесконечное дерево категорий товаров.
Что-то не получается — не выводит.
На вход функции подаётся массив
[PHP]array(
array(
"id"=> "1"
"pid"=> "0"
"name"=> "Категория 1"
"desc"=> "Описание категории 1" ),
array(
"id"=> "2"
"pid"=> "0"
"name"=> "Категория 2"
"desc"=> "Описание категории 2" ),
array(
"id"=> "3"
"pid"=> "0"
"name"=> "Категория 3"
"desc"=> "Описание категории 3" ),
array(
"id"=> "4"
"pid"=> "1"
"name"=> "Категория 4"
"desc"=> "Описание категории 4" ),
array(
"id"=> "5"
"pid"=> "2"
"name"=> "Категория 5"
"desc"=> "Описание категории 5" ),
array(
"id"=> "6"
"pid"=> "5"
"name"=> "Категория 6"
"desc"=> "Описание категории 6" )
)
[/PHP]

Вывод осуществляется функцией
[PHP] function fn_category_tree($array, $parent, $result='') {
foreach ($array as $value) {
$has_children=false;
if ($value['pid']==$parent) {
if ($has_children==false) {
$has_children=true;
$result .= '<ul style="list-style-type:none">'; }
$result .= '<li> <a href="?module=fncatalogue&showcat='.$value['id'].'">'.$value['name'].'</a>'.$value['desc'];
fn_category_tree($array, $value['id'], $result);
$result .= '</li>'; }

if ($has_children==true) $result .= '</ul>';
}
return $result;
}
[/PHP]
Но рекурсия не срабатывает почему-то, выводится не всё дерево, а только текущая, без потомков.
Здесь id — категория товаров, pid — её родитель, name — имя, desc — описание.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 9.10.2011, 20:59; Ответить: alexdrob
Сообщение #2


(Den1xxx @ 9.10.2011, 23:56) *
fn_category_tree($array, $value['id'], $result);

на первый взгляд ваша функция что то возвращает но не куда не присваивается что что возвращается.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Den1xxx
Den1xxx
Topic Starter сообщение 10.10.2011, 9:24; Ответить: Den1xxx
Сообщение #3


(alexdrob @ 9.10.2011, 23:59) *
на первый взгляд ваша функция что то возвращает но не куда не присваивается что что возвращается.

На первый взгляд она просто не сортирует то что надо, а выводит только категории уровня 0.
Ладно, в принципе так даже наверно лучше — убрать нафик рекурсию и прикрутить аякс для подгрузки категорий.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Witu
Witu
сообщение 10.10.2011, 11:02; Ответить: Witu
Сообщение #4


[php]
$result .= '<li> <a href="?module=fncatalogue&showcat='.$value['id'].'">'.$value['name'].'</a>'.$value['desc'];
fn_category_tree($array, $value['id'], $result);
$result .= '</li>'; }
[/php]
ничего не видите?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Den1xxx
Den1xxx
Topic Starter сообщение 10.10.2011, 11:54; Ответить: Den1xxx
Сообщение #5


(HTMLandPHP @ 10.10.2011, 14:02) *
ничего не видите?

Пока нет. Смутные подозрения закрадываются, что-то не так с $array?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Letmetouchyou
Letmetouchyou
сообщение 10.10.2011, 12:15; Ответить: Letmetouchyou
Сообщение #6


(Den1xxx @ 10.10.2011, 14:54) *
Смутные подозрения закрадываются, что-то не так с $array?

нет, не с ним.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Den1xxx
Den1xxx
Topic Starter сообщение 10.10.2011, 12:22; Ответить: Den1xxx
Сообщение #7


(Letmetouchyou @ 10.10.2011, 15:15) *
не с ним

а с чем? если массив был бы сортирован до foreach, рекурсии вообще бы не понадобилось.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Letmetouchyou
Letmetouchyou
сообщение 10.10.2011, 12:24; Ответить: Letmetouchyou
Сообщение #8


(Den1xxx @ 10.10.2011, 15:22) *
если массив был бы сортирован до foreach, рекурсии вообще бы не понадобилось.

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


(Den1xxx @ 10.10.2011, 15:22) *
а с чем?


(alexdrob @ 9.10.2011, 23:59) *
ваша функция что то возвращает но не куда не присваивается что что возвращается.


(HTMLandPHP @ 10.10.2011, 14:02) *
1
2
3
4
$result .= '<li> <a href="?module=fncatalogue&showcat='.$value['id'].'">'.$value['name'].'</a>'.$value['desc'];
************fn_category_tree($array, $value['id'], $result);
************$result .= '</li>'; }

ничего не видите?


just analyze;
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Den1xxx
Den1xxx
Topic Starter сообщение 10.10.2011, 12:37; Ответить: Den1xxx
Сообщение #9


(Letmetouchyou @ 10.10.2011, 15:24) *
на форуме кстати была такая тема, где и я и Alexdrob

Я смотрел эту тему — http://www.html.by/threads/18433-Drevovidn...ll=1#post109728
Даже в дневник занёс. Но при ближайшем рассмотрении оказалось — мускуль в функции дёргается столько раз, сколько категорий выводится.
Писать такое — закладывать бомбу замедленного действия.

С другой стороны написать алгоритм могу сам, но не догоняю как должен выглядеть входной массив до foreach.
Всё-таки поломаю голову ещё — и без рекурсии конечно работает (выводит категорию по id), но больно задача интересная:)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Den1xxx
Den1xxx
Topic Starter сообщение 10.10.2011, 12:49; Ответить: Den1xxx
Сообщение #10


(Letmetouchyou @ 10.10.2011, 15:24) *
я и Alexdrob приводили рабочие примери для сортировки в разные стороны и вывода а такой же структуру как и у тебя

Можно ссылочку?:rolleyes:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Нужна ли плоская структура категорий в ИМ?
1 noviktamw 1062 26.3.2024, 21:50
автор: c4p1t4l15t
Открытая тема (нет новых ответов) Ищу Adult Seo копирайтера для составления заголовков и описаний категорий
0 Reactive 1136 27.3.2023, 9:20
автор: Reactive
Открытая тема (нет новых ответов) Продам сгруппированное семантическое ядро по теме товаров на Авито
За август 870.000 человек из Москвы интересовалось в Яндексе покупкой
1 seonliner 1495 21.8.2022, 5:19
автор: seonliner
Открытая тема (нет новых ответов) Выгрузить базу товаров в WooCommerce
база готова
1 Infe 1572 28.7.2022, 8:21
автор: ui951uiFox
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыБаза товаров (opencart) SQL 70к+ товаров
Инструменты для дома, строительное и производственное оборудование
5 getdump 5607 1.9.2021, 2:04
автор: WebSniper


 



RSS Текстовая версия Сейчас: 29.3.2024, 0:38
Дизайн