Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамическое меню, проблема с генерацией 
V
    Опции темы
CoderUA
  Дата 4.2.2006, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 17.10.2005
Где: Ukraine

Репутация: нет
Всего: нет



Здравствуйте ув. программеры!

Помогите, пожалуйста, с такой проблемой.
Мне нужно постоить меню.
Пункты меню хранятся в БД, в таком виде
Код

------+----------+----------------+-----------+-----------+
c_id  |  c_name  |  c_parent_id   | c_order   | c_lang_id |
------+----------+----------------+-----------+-----------+
 1    | Раздел_1 |  0             | 1         | 1         |
------+----------+----------------+-----------+-----------+
 2    | Раздел_2 |  0             | 2         | 1         |
------+----------+----------------+-----------+-----------+
 3    | Раздел_3 |  0             | 3         | 1         |
------+----------+----------------+-----------+-----------+
 4    |Раздел_1.1|  1             | 4         | 1         |
------+----------+----------------+-----------+-----------+
 5    |Раздел_1.2|  1             | 5         | 1         |
------+----------+----------------+-----------+-----------+
 6    |Раздел_2.1|  2             | 6         | 1         |
------+----------+----------------+-----------+-----------+


c_id - идентификатор пункта меню (раздела)
c_name - имя (текст, который отображается в меню)
c_parent_id - идентификатор родительского раздела
c_order - порядок сортировки
c_lang_id - идентификатор языка

Я создал рекурсивную функцию, которая должна последовательно выводить каждый пункт в виде:
Раздел_1
|
|- Раздел_1.1
|- Раздел_1.2
|
Раздел_2
|
|- Раздел_2.1
|
Раздел_3

Но видимо я где-то делаю, что-то не так.
Потому что выводится только первый елемент.
Я сначала подумал, что где-то происходит затирание, но нет.
Привожу код функции.
Код

    var $MENU_GLOBAL = "";
    // Фунция формирования меню
    function menu_create ($parent_id, $lang, $enabled)
    {    
        // проверка и подготовка данных
            // доступность
        if ($enabled != 'Y') $enabled = 'N';
            // ID
        if ($parent_id == "")
            $parent_id = 0;
        else $parent_id = (int)$parent_id;
        
            //указан ли язык
        if (isset($lang))
            $lang = "&lang=".$this->lang_name_return($lang);
        else $lang = "&lang=$this->LANG_CURRENT"; 
            // ЗАПРОС
        $this->sql_query = "SELECT * FROM " . $this->TBL_CATS . " WHERE c_parent_id='$parent_id' AND c_enable='$enabled' ORDER BY c_order";
        $err = $this->sql_execute(); // Выполнение 
        if ($err) return (-1);    // ошибочка!
        else {
            if (mysql_num_rows($this->sql_res)>0)
            {
                $this->MENU_GLOBAL .= "<ul>\n";
                
                while ($row=mysql_fetch_array($this->sql_res))        
                {
                    $id = $row['c_id']; // id текущей категории
                    $cat = "cat/?cat=$id";
                    
                    $this->MENU_GLOBAL .= "<li><a href=\"/".$cat.$lang."\">".$row['c_name']."</a></li>\n";
                    
                    //unset($lang, $cat, $id);
                    $this->menu_create ($row['c_id'], $row['c_lang_id'], $enabled);
                }
                $this->MENU_GLOBAL .= "</ul>\n";
            }
            else ;
        }
    }

Вызываю функцию следующим образом:
menu_create(0, $lang_id, 'Y');

Заранее благодарен!
С ув. Slam

Это сообщение отредактировал(а) CoderUA - 4.2.2006, 22:56
PM MAIL ICQ   Вверх
CoderUA
Дата 9.2.2006, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 17.10.2005
Где: Ukraine

Репутация: нет
Всего: нет



Если у кого-то возникнет подобный вопрос, то смотрите решение здесь:ActiveX.Net.Ru
PM MAIL ICQ   Вверх
Mal Hack
Дата 9.2.2006, 02:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Че-то я не заметил как-то этой темы...
В принципе давно на phpclub'e висит такая статья: http://phpclub.ru/detail/article/2002-06-03
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.