Сложный SQL запрос, ЧПУ, PHP
Есть ссылка вида sitename.com/category/subcat1/subcat2/subcat3/catwithpost/post.html
её расчленяет на массив с категориями, в котором:
[0] => category
[1] => subcat1
[2] => subcat2
[3] => subcat3
[4] => catwithpost
Таблица в БД выглядит так: (возможно так же менять как либо, не важно)
-categories
--cat_id
--cat_name //название на русском например
--cat_short_name //название на английском (оно в ссылке)
--cat_parent_id
--cat_tags
сейчас запрос не корректен, как вы догадались:
Код:
SELECT
`posts`.*,`categories`.`cat_id`,`categories`.`cat_short_name`
FROM
`categories`, `posts`
WHERE
`posts`.`post_name` = '$post_name'
AND
`categories`.`cat_id` = `posts`.`post_cat_id`
AND
`categories`.`cat_short_name` = '$catwithpost'
`posts`.*,`categories`.`cat_id`,`categories`.`cat_short_name`
FROM
`categories`, `posts`
WHERE
`posts`.`post_name` = '$post_name'
AND
`categories`.`cat_id` = `posts`.`post_cat_id`
AND
`categories`.`cat_short_name` = '$catwithpost'
Теперь самый сок! Надо построить цепочку от конца (catwithpost) до родителя, и проверить совпал ли путь.
Сейчас же выходит некрасиво, ссылка вида
sitename.com/category/subcat1/subcat2/subcat3/catwithpost/post.html
равна ссылке
sitename.com/category/catwithpost/post.html
Можно рекурсивно прогнать выборку
Цитата: int
Можно рекурсивно прогнать выборку
не можно, а нужно или вводить Materialized Path