[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Меню из БД
Jose
Я хочу хранить пункты меню и ссылки на которые ведут эти пункты в БД. У меня получается следующая таблица:

id -уникальный идентификатор пункта меню
title_item - заголовок пункта меню
page_path - путь к странице, нв которую ведет пункт меню

Например:
Цитата

  id    title_item  page_path
---+------------+------------------
  1 | Contacts  | contacts.php
  2 | About Us | about.php
---+------------+------------------


Выполняю SQL-запрос и вывожу его в виде списка.
PHP
while($dbrow mysql_fetch_assoc($result))
    print 
"<li><a href=".$dbrow['page_path'].">".$dbrow['title_item']."</a></li>";

Мне кажется, что я что-то не правильно продумал с сохранением пути к странице. Как обычно реализовывается подобная задача? Можно образец или ссылку?



Спустя 21 минута, 59 секунд (2.02.2009 - 01:17) REANIMATOR написал(а):
с чего ты решил что не правильно? есть результат?

Спустя 9 часов, 30 минут, 38 секунд (2.02.2009 - 10:47) Jose написал(а):
Да вот когда я для "About Us"прописал адрес "service/about.php" и перешел по нему, то столкнулся с тем что остальные адреса стали выстраиваться следующим образом, например для "Contacts" стал "service/contacts.php", а должен быть просто "contacts.php", т.к. эта страница лежит в корне. Т.е. мне надо либо в скрипте где-то анализ пути делать, либо сам адрес как-то сохранять по другому. Может есть какое-то решение, более красивое, чем то, о котором я написал?

Спустя 17 минут, 15 секунд (2.02.2009 - 11:05) sergeiss написал(а):
Я бы предложил отказаться от использования БД в данном случае, т.к. меню - достаточно статичная штуковина. И пунктов меню не так уж и много.
Тут проще будет сделать отдельный файл (назовем его, допустим, menu.php), который надо положить куда-то. Например, в корень сайта.
Его можно будет использовать в любом скрипте, используя include_once("menu.php");
Важно то, что пути из этого меню будут относительно местоположения текущего скрипта. Поэтому для скрипта services/about.php надо прописывать относительные пути, а не просто "menu.php". При использовании include_once это сделать несложно. Достаточно просто перед подключением скрипта прописать дополнительную переменную.
Примерно так:
PHP
$path_top="../";
include_once(
"menu.php");

а в самом menu.php (при использовании БД)
PHP
while($dbrow = mysql_fetch_assoc($result))
    print "<li><a href=".$path_top.$dbrow['page_path'].">".$dbrow['title_item']."</a></li>";

Если БД не используется (я все-таки настаиваю, что в данном случае лучше без БД), то принцип всё равно сохраняется.
Но лучше класть этот about.php (и все другие скрипты, которые указываются в меню) в корень сайта, иначе легко запутаться, для какого файла какой путь надо прописывать.

Спустя 2 часа, 37 минут, 10 секунд (2.02.2009 - 13:42) Jose написал(а):
Я хочу сделать CMS и дать пользователю возможность самому создавать структуру страниц и соответственно структуру меню. Поэтому и хочу использовать БД.

Спустя 30 минут, 50 секунд (2.02.2009 - 14:13) sergeiss написал(а):
Ну... Если хочешь БД - используй smile.gif Делаешь такой "довесок", как я написал, в виде переменной $path_top. И выставляешь его значение в зависимости от местоположения скрипта, из которого это меню вызывается (где он находится в иерархии папок).

Спустя 1 час, 14 минут, 3 секунды (2.02.2009 - 15:27) AndryG написал(а):
используйте абсолютные адреса.
Код
 id    title_item  page_path
---+------------+------------------
 1 | Contacts  | /contacts.php
 2 | About Us | /service/about.php
---+------------+------------------
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.