Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Иерархическое меню
 
 автор: Вопросик   (14.10.2013 в 10:21)   письмо автору
 
 

Как на php отображать иерархическое меню каталогов и подкаталогов

  Ответить  
 
 автор: elenaki   (14.10.2013 в 11:05)   письмо автору
 
   для: Вопросик   (14.10.2013 в 10:21)
 

php ничего не отображает.

  Ответить  
 
 автор: Вопросик   (14.10.2013 в 11:37)   письмо автору
 
   для: elenaki   (14.10.2013 в 11:05)
 

Для отображения в браузере выводить иерархическое меню используя PHP, а не JavaScript.

  Ответить  
 
 автор: elenaki   (14.10.2013 в 17:15)   письмо автору
 
   для: Вопросик   (14.10.2013 в 11:37)
 

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

  Ответить  
 
 автор: psychomc   (14.10.2013 в 18:46)   письмо автору
 
   для: elenaki   (14.10.2013 в 17:15)
 

хм...выводить то будет как раз таки php (echo/print/etc), только в HTML-формате

  Ответить  
 
 автор: Вопросик   (14.10.2013 в 19:48)   письмо автору
 
   для: elenaki   (14.10.2013 в 17:15)
 

рнр просто выводит в поток, а дальше все по конвееру, ну не расписывать все подробно же на
1 000 000 строк, что происходит при передачи по сети и в браузере.

Я написал сокращенно о том, что должно быть результатом работы скрипта.
Т.е выводить окончательно не в массив, не в файл, а ОТОБРАЖАТЬ на экране монитора в браузере.

Я не знаю вы специально уводите от сути вопроса или просто не понимаете вопроса.

ВЫ СУЩНОСТЬ ВОПРОСА ПОНИМАЕТЕ?

  Ответить  
 
 автор: mihdan   (14.10.2013 в 18:28)   письмо автору
 
   для: Вопросик   (14.10.2013 в 10:21)
 

Ищите на форуме - очень много раз обсуждали (tree, рекурсия, Trianon - испольхуйте эт ключевые слова)

  Ответить  
 
 автор: Trianon   (14.10.2013 в 18:35)   письмо автору
 
   для: mihdan   (14.10.2013 в 18:28)
 

А меня-то за что?

  Ответить  
 
 автор: elenaki   (14.10.2013 в 18:58)   письмо автору
 
   для: Trianon   (14.10.2013 в 18:35)
 

Ой! Трианон вернулся! Соскучилась ;)

  Ответить  
 
 автор: Вопросик   (14.10.2013 в 20:04)   письмо автору
 
   для: mihdan   (14.10.2013 в 18:28)
 

Есть на JavaScript, а на PHP не нашел,
Только у Колисниченко "Движок для вашего сайта". Но там, что то наворочено несколько путано

  Ответить  
 
 автор: psychomc   (14.10.2013 в 18:46)   письмо автору
 
   для: Вопросик   (14.10.2013 в 10:21)
 

данные каталогов и подкаталогов лежат в базе?

  Ответить  
 
 автор: Вопросик   (14.10.2013 в 19:49)   письмо автору
 
   для: psychomc   (14.10.2013 в 18:46)
 

1|1-1 Дисковые пилы для стали|0|информация
2|1-2 Дисковые пилы для алюминия|0|информация
3|1-3 Линии обработки стальных профилей|0|информация
4|1-4 Центры обработки листового металла|0|информация
5|2-5 Отрезные станки|3|информация
6|2-6 Линии сверления профилей|3|информация
7|2-7 Роботы для обработки профилей|3|информация
8|3-8 Уровень/id|5|информация
9|3-9 Уровень/id|5|информация
10|4-10 Уровень/id|8|информация

идентификатор категории | название категории | идентификатор родителя

  Ответить  
 
 автор: psychomc   (15.10.2013 в 11:47)   письмо автору
 
   для: Вопросик   (14.10.2013 в 19:49)
 

можете отталкивать от этого

<?php
function recursion(array $array, array &$result$key$parent_key$start 0) {
    foreach (
$array as $k=>$v) {
        if (
$v[$parent_key] === $start) {
            
$result[] = $v;
            unset(
$array[$k]);
            
recursion($array$result$key$parent_key$v[$key]);
        }
    }
}

$categories = array(
    array(
        
'id'  =>1,
        
'name'=>'category 1',
        
'pid' =>0,
    ),
    array(
        
'id'  =>2,
        
'name'=>'category 2',
        
'pid' =>0,
    ),
    array(
        
'id'  =>3,
        
'name'=>'category 3',
        
'pid' =>0,
    ),
    array(
        
'id'  =>4,
        
'name'=>'category 1.1',
        
'pid' =>1,
    ),
    array(
        
'id'  =>5,
        
'name'=>'category 1.2',
        
'pid' =>1,
    ),
    array(
        
'id'  =>6,
        
'name'=>'category 2.1',
        
'pid' =>2,
    ),
    array(
        
'id'  =>7,
        
'name'=>'category 3.1',
        
'pid' =>3,
    ),
    array(
        
'id'  =>8,
        
'name'=>'category 2.1.1',
        
'pid' =>2,
    ),
    array(
        
'id'  =>9,
        
'name'=>'category 3.1.1',
        
'pid' =>7,
    ),
);


$result = array();

recursion($categories$result'id''pid');

echo 
'<pre>';
print_r($result);
?>

  Ответить  
 
 автор: Вопросик   (15.10.2013 в 22:19)   письмо автору
 
   для: psychomc   (15.10.2013 в 11:47)
 

Пока не очень понял Ваш код, буду смотреть позже

  Ответить  
 
 автор: cheops   (14.10.2013 в 21:12)   письмо автору
 
   для: Вопросик   (14.10.2013 в 10:21)
 

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

  Ответить  
 
 автор: Вопросик   (14.10.2013 в 21:33)   письмо автору
 
   для: cheops   (14.10.2013 в 21:12)
 

Ни как. Тут сть выделенная (активизированная) категория и структура зависит от нее.
Это типа как http://my-shop.ru/shop/catalogue/3397/sort/a/page/1.html

\
\ косая ветвь
\
\_ Выделенная категория
|
| вертикальная ветвь
|
|
2 цикла получается.
Если выводить все корни, то 3 цикла получается

  Ответить  
 
 автор: Sfinks   (15.10.2013 в 09:45)   письмо автору
 
   для: Вопросик   (14.10.2013 в 21:33)
 

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

  Ответить  
 
 автор: Вопросик   (24.10.2013 в 15:59)   письмо автору
 
   для: Sfinks   (15.10.2013 в 09:45)
 

Чем эта плоха

  Ответить  
 
 автор: Sfinks   (25.10.2013 в 08:04)   письмо автору
 
   для: Вопросик   (24.10.2013 в 15:59)
 

во-первых - решения я так и не увидел, вы тоже не пишете, что решили, а по ссылке - решение готово
во-вторых - ваша структура предполагает либо обращение к БД в цикле, что всегда плохо. Либо вытаскивание в ПХП всей структуры и рекурсивный разбор данных. Что медленно.
По ссылке же представлена структура, из которой вы можете одним запросом к БД выбрать любой срез дерева: Уровень, ветку, всех родителей и т.п.

  Ответить  
 
 автор: Вопросик   (30.10.2013 в 13:23)   письмо автору
 
   для: Sfinks   (25.10.2013 в 08:04)
 

Хотелось услышать доки, что лучше.
Одноого афиширования декларации, извините, но любому недостаточно
Хотелось бы аргументироать.
Если нет аргументов, то факт не существует.

  Ответить  
 
 автор: Sfinks   (01.11.2013 в 09:51)   письмо автору
 
   для: Вопросик   (30.10.2013 в 13:23)
 

Правда думаете, что больше нечего делать кроме как кого-то в чем-то убеждать?
Можно включить голову и подумать самому что лучше и почему.
А если не хотите, то я за вас это делать не собираюсь.
Репетиторством не увлекаюсь.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования