Всем здравствуйте.
Кроплю над страницей вывода пунктов меню навигации.
Задача вроде бы решена, но, совсем не рационально Прошу более опытных форумчан взглянуть на решение.
есть 3 таблицы
menu
---------------------
num | part_art | id
num - порядковый номер пункта меню для вывода на сайте
part_art - хранит тип страницы на которую ведёт пункт меню (1/0 - раздел/статья)
id - идентификатор статья или раздела. Равен id_article из таблицы статей для статьи либо id_artpage из таблицы разделов, соответственно для раздела.
aricle
-------------------
id_article | name
artpage
---------------------
id_artpage | name
Результатом работы скрипта должна стать -
таблица - порядок отображения пунктов меню на сайте
1 РазделN
2 СтатьяN
3 СтатьяС
4 РазделA
...
Моё решение:
CODE ( htmlphp):
скопировать код в буфер обмена
<? //Соединяемся с бд require_once($_SERVER["DOCUMENT_ROOT"]."/admin/config.php"); //Количество пунктов меню которые разрешено вывести $pos_number $pos_number = 5; //Извлекаем всё из таблицы menu $query= "Select from menu"; if (!$one) { } else { //Если извлечение успешно, то помещаем результат в массив } ?> //Таблица вывода значений пунктов меню <table> <? //Начало цикла вывода пунктов меню, количество проходов равно количеству пунктов меню в переменной $pos_number for ($i=1; $i<= $pos_number; $i++) { //Проверяем стратус страницы на которую ведёт пункт меню. Если Раздел/Статья, то извлекаем данные из таблицы разделов/статей //Если раздел, выводим в строку порядковый номер пункта меню и название радела if($menu['part_art']=1) { $query = sptintf("Select name from artpage where id_artpage = %d", $menu['id']); echo "<td>".$menu['num']."</td><td>".$menu_name['name']."</td></tr>"; } //Если статья, выводим в строку порядковый номер пункта меню и название статьи else { $query = sptintf("Select name from articles where id_article = %d", $menu['id']); echo "<td>".$menu['num']."</td><td>".$menu_name['name']."</td></tr>"; } } </table> ?>
Решение мне кажется не изящным в части постоянных запросов к бд в ходе выполнения цикла.
и, таблица выводится не отсортированной по номеру пунктов меню.
Более опытные форумчане поскажите как правильно построить скрипт, особенно SQL запрос на выбору сразу всех значений из обеих таблиц..
(Добавил)
То есть нужно извлекать значения полей name из таблиц разделов и статей, так чтобы id таблицы меню был равен id_artpage или id_article, поскольку в меню может попасть и раздел и статья...
правильно?(Отредактировано автором: 05 Ноября, 2010 - 22:42:49)
|