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 :: ЧПУ. Проверка корректности url'a, определение категории

 PHP.SU

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


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

> Без описания
kir55rus
Отправлено: 07 Декабря, 2013 - 11:56:12
Post Id


Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Янв. 2012  
Откуда: Омск, Россия


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




Здравствуйте

Есть ссылка вида: site.ru/category/sub-cat1/sub-ca t2/sub-cat3/cat-with-post/post.h tml

Есть 3 таблицы:
-categories
--cat_id
--cat_parent_id
--cat_title (название категории на русском)
--cat_name (название категории транслитом. Именно эта строка находится в url: "sub-cat1", "cat-with-post")

-posts
--post_id
--post_title (название на русском)
--post_text
--post_name (название на транслите)

-links (Так как статья может принадлежать сразу нескольким категориям, создана эта таблица)
--link_id
--post_id
--cat_id


В скрипте url разбивается и заносится в массив:
CODE (htmlphp):
скопировать код в буфер обмена
  1. [0] => category
  2. [1] => sub-cat1
  3. [2] => sub-cat2
  4. [3] => sub-cat3
  5. [4] => cat-with-post
  6. [5] => post


Нужно:
1. Определить cat_id категории статьи (cat-with-post)
2. Проверить корректность url.

Поясняю:
Первое:
Если делать запрос типа
SELECT `cat_id` FROM `categories` WHERE `cat_name`='cat_with_post'
То нельзя будет использовать одинаковые имена категорий, иначе они будут путаться
Чтобы путаницы не было, необходимо искать cat_id исходя из поля cat_parent_id (идентификатор категории-родителя). Проблема тут в том, что при большой вложенности к базе будет очень много запросов
Выход из данной ситуации вижу один - хранить в базе не отдельные кусочки ("sub-cat3", cat-with-post"...), а полностью url ("category/sub-cat1/sub-cat2/sub-cat3/cat-with-post/"). Но тут возникает другая проблема. Если я захочу изменить название какой-нибудь категории, то редактировать придется всю таблицу (Например, захочу заменить "sub-cat2" на "subcat-2").

Второе:
Если определять идентификатор только cat-with-post, а на остальное просто не смотреть, то статья станет доступной по адресам:
site.ru/cat-with-post/post.html
site.ru/sub1/cat-with-post/post. html и т.д.
А это не очень хорошо. Поэтому нужно проверять правильность иерархии. Тут бы отлично бы справился второй вариант, но меня отпугивает возможная проблема с редактированием


Вот такие пироги.. Помогите найти решение


P.S. Как сгенерировать структуру таблицы типа ?
CODE (htmlphp):
скопировать код в буфер обмена
  1. +-------------+
  2. |    name     |
  3. +-------------+
  4. |    123      |
  5. +-------------+

Не руками ведь их пишут...


UPD: Раньше использовал ссылки типа site.ru/1.cat/5.sub/123.post.hym l
Где 1,5,123 - идентификаторы статьи и категорий. Я просто брал эти id, а на сами названия не смотрел. Поэтому в скором времени обнаружилась ошибка, что одна и та же статья доступна по адресам 1./5.sub/123.----.hyml, 1.caaaat/5./123.pt.hyml и т.д.
Да и смотрятся такие url'ы ужасно, раздражают глаза. Куда лучше, когда в ссылке нет id Улыбка Поэтому в новом варианте хочу использовать формат, как писал в начала сообщения

(Отредактировано автором: 07 Декабря, 2013 - 12:39:40)

 
 Top
DeepVarvar Супермодератор
Отправлено: 07 Декабря, 2013 - 12:22:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




Вот ты гемор себе нашел..
Сделай каждому документу уникальный УРЛ и не парься.
 
 Top
kir55rus
Отправлено: 07 Декабря, 2013 - 12:38:21
Post Id


Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Янв. 2012  
Откуда: Омск, Россия


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




DeepVarvar пишет:
Вот ты гемор себе нашел..
Сделай каждому документу уникальный УРЛ и не парься.


Ожидается около 50-100 категорий (родительские, дочерние)
В каждой категории от 50 до 1000 страниц (постраничная навигация)
+ страницы с постами

Руки отвалятся прописывать для каждой страницы свой url. А если добавится новая страница в категории, то придется прибавлять +1 ко всем имеющимся (постраничная навигация)
 
 Top
DeepVarvar Супермодератор
Отправлено: 07 Декабря, 2013 - 12:43:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




kir55rus пишет:
Руки отвалятся прописывать для каждой страницы свой url
Ну вот пример, где там руки отвалятся?
(Добавление)
Он там автоматом от названия генерится.
 
 Top
kir55rus
Отправлено: 07 Декабря, 2013 - 13:02:19
Post Id


Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Янв. 2012  
Откуда: Омск, Россия


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




DeepVarvar пишет:
kir55rus пишет:
Руки отвалятся прописывать для каждой страницы свой url
Ну вот пример, где там руки отвалятся?
(Добавление)
Он там автоматом от названия генерится.


Понял суть. Возьму на заметку, как запасной вариант

Пугает лишь такая картина:
Была категория "Новости" с url "/Новости". Редактирую url на "/Новости2"
Захожу на сайт, перехожу на страницу со статьей (адрес "/Новости/Статья...")
В силу своей привычки я не нажимаю "Назад" в браузере, а стираю в адресной строке "/Статья...", ожидая попасть в раздел с новостями. Попадаю на 404

Ваш вариант отличается от моего лишь тем, что у меня в планах было редактировать все значения в базе, а у Вас - одну запись
Благодарю за вариант

(Отредактировано автором: 07 Декабря, 2013 - 13:03:23)

 
 Top
DeepVarvar Супермодератор
Отправлено: 07 Декабря, 2013 - 13:05:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




kir55rus пишет:
Захожу на сайт, перехожу на страницу со статьей (адрес "/Новости/Статья..
Верно, и это я считаю совсем не косяк, т.к. изменение УРЛ одного документа для СЕО менее болезненно, чем если я буду обновлять всех его потомков на новый урл, при их переносе в другой узел или при редактировании родителя.
В любом случае - технически я это сделать могу, но посчитал что будет меньше крови.
(Добавление)
Ах да - кроме того это все "статические страницы" разных типов, а вот с модулями, которые так же подключаются в дерево, там уже все как обычно - имена экшнов и параметров не изменяются.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB