ЧПУ и выборка из базы данных

Станислав
На сайте с 27.12.2009
Offline
249
977

Всем привет, захотел перенести один сайтик с DLE на самопис и не могу определится как лучше сделать, да и как правильнее.

Вобщем решил сделать ЧПУ для сайта, с выводом новостей проблем нет, но с разделами так и не пойму как сделать.

Есть две таблицы, таблица с новостями и разделами

Таблица с новостями

ТАБЛИЦА_1

id | title | story | alt_name | id_cat

Таблица с разделами

ТАБЛИЦА_2

id_cat | name | url

Дело в том что разделы вида /cat/ или /cat2/

Вот не могу определится, то ли мне писать функцию по выборке id_cat по url, или же склеить две таблицы и дергать записи непосредственно по полю url?

Вроде как по второму методу проще и удобнее или я заблуждаюсь?

Мы там, где рады нас видеть.
ewg777
На сайте с 04.06.2007
Offline
225
#1
склеить две таблицы и дергать записи непосредственно по полю url?

Как при такой реализации изменить урл категории?

Станислав
На сайте с 27.12.2009
Offline
249
#2
ewg777:
Как при такой реализации изменить урл категории?

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

ewg777
На сайте с 04.06.2007
Offline
225
#3
Ms-Dred:
Вы меня не поняли, склеить две таблицы не физически, а программно, т.е. соответствующим запросом.

Так и надо, термины жесть

Станислав
На сайте с 27.12.2009
Offline
249
#4
ewg777:
термины жесть

тут уж извиняйте, объясняю как могу, что бы было понятно, хотя может быть это понятно только мне

ewg777:
Так и надо

я тоже думал что это будет более правильнее, пошел колдовать над выборкой :)

спасибо.

L
На сайте с 07.04.2011
Offline
4
#5
Вот не могу определится, то ли мне писать функцию по выборке id_cat по url, или же склеить две таблицы и дергать записи непосредственно по полю url?
Вроде как по второму методу проще и удобнее или я заблуждаюсь?

Если записей в обоих таблицах немного, то подойдет второй вариант.

Если записей приличное количество и нужна оптимизация, то следует помнить, что join'ы всегда работают медленнее запросов к "одиночным" таблицам.

В этом случае предпочтительнее первый вариант с кешированием результата выборки. Функция будет работать следующим образом:

1) выбираем все категории

2) преобразуем в ассоциативный массив вида url=>id_cat

3) кешируем полученный результат, например на час-два-сутки.

4) по ключу массива получаем получаем id категории

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий