Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Меню и навигация на PHP

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Qwe1
Отправлено: 02 Июля, 2008 - 11:26:25
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Дек. 2007  


Помог: 0 раз(а)




Подскажите, как лучше реализовать навигацию по сайту: как хранить и выводить данные, формировать ссылки, как описать меню (пока без БД)? Есть 2-х уровневое меню, элементы которого я описал в файле. Предполагается, что потом надо будет эти пункты меню редактировать (добавлять, удалять и т.д.). Содержимое пункта меню должно инклюдится из файла. Файлы я назвал также, как описано в меню (pp1.inc, sam.inc и т.д.), эти же значения должны задавать ссылки: для первого уровня: site.com/pp1.html, для второго: site.com/pp1/sam.html. А как правильно сделать такое (пока интересует не код, а идеи)?
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $menu1 = array("pp1"=>"Первый", "pp2"=>"Второй", "pp3"=>"Третий");
  4. $menu2 = array(
  5. "Первый" => array("Кенон"=>"canon", "Самсунг"=>"sam", "ХП"=>"hp"),
  6. "Второй" => array("Еще"=>"other"),
  7. "Третий" => array("Другое"=>"dr")
  8. );
  9. ?>
  10.  
 
 Top
valenok Модератор
Отправлено: 02 Июля, 2008 - 11:54:58
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




id | cat | catname
--------------------------------
1 | 0 | фотоаппараты
2 | 0 | автомобили
3 | 0 | ракеты
4 | 2 | Ferari
5 | 2 | Toyota
6 | 1 | Lexmark
7 | 1 | Canon


-----
Truly yours, Sasha.
 
My status
 Top
Qwe1
Отправлено: 02 Июля, 2008 - 12:01:16
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Дек. 2007  


Помог: 0 раз(а)




А где связь "меню-подменю"? надо ввести еще один столбик? И как формировать ссылки?
 
 Top
SergeantPEPPER
Отправлено: 02 Июля, 2008 - 12:47:08
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Сент. 2007  
Откуда: Казань


Помог: 0 раз(а)




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

таблица в бд состоит из трех столбцов.
1) id - ид-шник, однозначно определяющий строку в этой таблице.
2) cat - ид-шник родительской категории, если значение данного поля 0, это означает, что данная категория высшего уровня, у которой нет родителей (в Вашем случае для меню 1-ого уровня)
3) catname - название категории.

Таким образом формируется дерево категорий, в котором количествол уровней может быть произвольным.
 
 Top
ПхП-ломастер
Отправлено: 02 Июля, 2008 - 14:59:34
Post Id


Новичок


Покинул форум
Сообщений всего: 51
Дата рег-ции: Июнь 2008  


Помог: 0 раз(а)

[+]


И еще туда, после catname, прописываем url
 
 Top
Qwe1
Отправлено: 02 Июля, 2008 - 16:08:26
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Дек. 2007  


Помог: 0 раз(а)




Все же, еще надо ввести столбик с id2, который бы определял порядок пунктов в каждом подменю. Конечно, это лучше сделать в БД, но пока надо на файлах. И самое главное: ссылка! - у меня в меню была пара значений, к примеру, "Еще"=>"other" - их ввел администратор сайта, он же должен создать файл "other.inc" и куда-то его положить. Создавать структуру папок, аналогичную меню? Может быть, но зачем тогда файл описания меню (как бы БД)? Получается, надо ввести еще одно поле в файл-описания, которое определяло бы ссылку. Тогда вопрос: как этот файл считывать в массив и потом выводить структуру меню с ссылками?
 
 Top
valenok Модератор
Отправлено: 02 Июля, 2008 - 16:22:21
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




а url зачем ?
Обойдётся index.php?id=


-----
Truly yours, Sasha.
 
My status
 Top
ПхП-ломастер
Отправлено: 02 Июля, 2008 - 16:43:29
Post Id


Новичок


Покинул форум
Сообщений всего: 51
Дата рег-ции: Июнь 2008  


Помог: 0 раз(а)

[+]


) ну лишние запросы... не есть гуд...
(Добавление)
Qwe1
зачем усложняете такую простую задачу?
 
 Top
SergeantPEPPER
Отправлено: 02 Июля, 2008 - 18:03:12
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Сент. 2007  
Откуда: Казань


Помог: 0 раз(а)




ПхП-ломастер , отдельный столбец под url действительно абсолютно бесполезен в случае, если все пункты меню ведут на одну и ту же пхп-страницу.

Qwe1, а для одного или двух пунктов типа Other можно сделать исключение, обработав его через условие прямо в скрипте.

Для занесения-вынесения текста в массив и наоборот посмотрите функции explode () и implode ()
 
 Top
Qwe1
Отправлено: 02 Июля, 2008 - 23:41:36
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Дек. 2007  


Помог: 0 раз(а)




Я хочу, чтобы URL выглядел так: site.com/pp1/other.htm, то есть ЧПУ (используя mod rewrite). Поэтому и ссылки лучше сделать понятней, а не site.com/1/14 (хотя это и проще). И файлы, котрые будут инклюдится в зависимости от выбранного пункта меню тоже называться будут понятней. Кстати, а как файлы с инфой называть/хранить лучше в моем случае?

(Отредактировано автором: 02 Июля, 2008 - 23:43:18)

 
 Top
valenok Модератор
Отправлено: 03 Июля, 2008 - 11:27:54
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Да какая разница как их хранить если у тебя всё равно мод рерайт стоит ?


-----
Truly yours, Sasha.
 
My status
 Top
Qwe1
Отправлено: 03 Июля, 2008 - 11:44:07
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Дек. 2007  


Помог: 0 раз(а)




А как именно-то хранить?
И как МодРеврайт будет из id=01 делать other.html, то есть, откуда он будет знать, что 01 - это other?
 
 Top
valenok Модератор
Отправлено: 03 Июля, 2008 - 18:16:14
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Если у вас все наименования на Англ языке то получается
что
/photo/canon.html

Ищете в базе запись с именем canon
Если производит болиды для формулы 1
то ищите по имени канон у которые являются суб категорией photo


-----
Truly yours, Sasha.
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB