как искать категорию и то что в ней по ссылке

Статус
В этой теме нельзя размещать новые ответы.

Safary

Новичок
как искать категорию и то что в ней по ссылке

как такая вещь делается?
вот к примеру захожу я на такую ссылку: www.site.ru/articles/03

Вот мне советовали делать md5 хеш ссылке и искать в таблице категорий этот хеш...
но там же нету /articles/03 , есть тока /articles - хеш...

а статья лежит в таблице articles.
Что посоветуете делать?
Тоесть как такие вещи во всех CMS делаются?
 

Фанат

oncle terrible
Команда форума
заставь дурака богу молиться - он лоб расшибет.

Safary
какая проблема разобрать урл, получить модуль, который будет запускаться - articles и идентификатор статьи - 3?
 

Safary

Новичок
как разобрать знаю, а как модуль получить?
ведь у меня ссылки не только такие будут - /articles/03
а ещё и такие могут быть:

/guestbook - просто модуль
/contact - не модуль, просто страница
/our_workers/teachers - тоже просто страница

Вот у меня есть таблица категорий, там всё абсолютна вся структура записана и страницы и моды и каталоги и т.д.
также рядом с названием секции записано что это... если 1 - то страница, 2 - то мод, 3 - то каталог.
 

Фанат

oncle terrible
Команда форума
надо было сначала думать, как будешь навигацию делать
а потом уже свой супер-каталог создавать.
а не наоборот

сделай имена уникальными и ищи в своем каталоге сколько влезет.
 

Safary

Новичок
имена униальные, просто где много категорий - там другие таблицы идут...

-~{}~ 07.04.09 13:09:

я думаю может сделать так...
сначала ищется /articles/03
если не находит, то ищет /articles/
находит, запускает articles.php
а он уже ищет 03
нормально?
 

vovanium

Новичок
если 1 - то страница, 2 - то мод, 3 - то каталог.
Зачем так делать?
Сделай чтобы указывался тип страницы (модуля), т.е. например, 1 - простая страница, 2 - гостевуха, 3 - новости и т.п.
Тогда никаких проблем не будет, нашел guestbook, определил тип страницы 2, передал запрос соответствующему модулю.
 

Safary

Новичок
хм, через регулярное как во втором случае - это ж ппц сколько ресурсов тратится...
а первое не подходит...
 

pilot911

Новичок
Автор оригинала: Safary
хм, через регулярное как во втором случае - это ж ппц сколько ресурсов тратится...
а первое не подходит...
совсем нет, многие так делают... и ничего, живут :)
 

Духовность™

Продвинутый новичок
через регулярное как во втором случае - это ж ппц сколько ресурсов тратится...
ничего там не тратится.

Разбор URL на уровне mod_rewrite лично для меня - не очень любимое занятие. Вместо того, что бы править каждый раз .htaccess, добавляя и модернизируя паттерны URL адресов (а ещё копаться в 500 ошибках), можно перенаправлять ВСЕ запросы, отличные от картинок, JS, CSS и пр. вспомогательных файлов, в один файл - index.php, в котором мы получаем некую определенную переменную (назовем её path):

Код:
RewriteEngine On
Options +FollowSymlinks
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(js|ico|gif|jpg|jpeg|png|css|cur|doc|xls|txt)$ [NC]
RewriteRule (.*) index.php?path=/$1&%{QUERY_STRING} [L]
Теперь в index.php у нас есть $_REQUEST['path'] содержащая запрошенный URL. Мы создаем массив всевозможных URL, которые могут быть у нас на сайте:

PHP:
$paths = array
(
    // соответствия вида шаблон URL => модуль сайта 
    '~/articles/?$~' => 'articles_index',
    '~/articles/([a-zA-Z0-9_\-]+)/?$~' => 'articles_rubrics',
    '~/articles/([a-zA-Z0-9_\-]+)/([a-zA-Z0-9_\-]+)\.html~' => 'article',
);
Обработать полученный URL теперь можно как угодно. Проходим циклом по массиву URL и ищем соответствие с запрошенным URL-адресом:

PHP:
foreach ($paths as $regexp => $mod)
{
    if (preg_match($regexp, $_REQUEST["path"], $_PARAMS))
    {
        // тут в PARAMS  все необходимые данные. как их использовать - догадаться не трудно
        // $mod содержит имя php-скрипта, отвечающего за вывод данной страницы
    }
}
 

pilot911

Новичок
Автор оригинала: vovanium
Так индусский код тем и отличается, что говнище, но кое-как работает ;)
в смысле? ну не хочет человек использовать роутеры и MVC

остается mod_rewrite....
 

Safary

Новичок
triumvirat, ну в принципе остается этот вариант использовать. Спасибо что на примере показал, правда у меня в базе все категории :)

Думаю ещё такой вариант... Мне кажется он быстрее будет.
В общем УРЛ - /articles/05 ищется в базе, не находится и ищется /articles

вроде и больше 2 раз не будет искаться...
 

Духовность™

Продвинутый новичок
Safary
ну в принципе остается этот вариант использовать.
это вариант тоже самое, о чем ***** тебе говорил: "какая проблема разобрать урл, получить модуль, который будет запускаться - articles и идентификатор статьи - 3?"

отличие лишь в том, что в данном случае используется механизм разбора URL непосредственно в PHP. Так в чем проблема была сделать точно такой же разбор в .htaccess?
 

Фанат

oncle terrible
Команда форума
мне вот интересно, кто здесь спрашивал, как разобрать урл?
что аж двое доброхотов кинулись решать эту задачу?
 

vovanium

Новичок
pilot911
Да это просто касательно выражения "и ничего живут" ;)
да и как правильно заметил Фaнaт, у ТС вроде нет проблем с разбором url, он не знает что с ним дальше делать
 

Safary

Новичок
не, всетаки как в регулярке то сделать? у мя мод может быть и в:
articles/03
и в
lessons/3dsmax/animation/56

-~{}~ 07.04.09 22:11:

вот мне бы тогда сделать бы так:

В мод-реврайте как-то прописать, чтобы
цифры в одну переменную, буквы с цифрами в другую. Тоесть где есть цифры и буквы - проходит в $_GET['category'], а где тока цифры - в $_GET['object_id']
как сделать-то?
если тока цифры и буквы разделить то знаю как, а если буквы и цифрами и буквы - то нет, подскажите =)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху