regi
Новичок
Несколько вопросов по небольшой cms и mod_rewrite
Начал писать более или менее универсальный код админки для своих проектов =), пока пишу скрипт управления разделами сайта.
В базе использовал nested sets.
Таблица разделов выглядит так:
cid(int) cleft(int) cright(int) clevel(int) ctitle(varchar) cpath(varchar)
Где ctitle - название раздела,cpath - путь раздела от корня, например /catalog/raznoe/tovar. Именно по cpath осуществляется поиск (стоит перенаправление всего в хтаксессе на index.php)
Есть ли смысл добавить сюда поле и хранить в нем например md5(cpath) для ускорения выборки? то есть в index.php делать $sel=md5($query_string) и затем в запросе where md5_cpath=md5($sel)?
Свойства разделов, например, закрытый раздел и т.п., лучше хранить в отдельной таблицы и делать джойн при выборке?
На что следует обратить внимание?
Так же возникла небольшая проблема при переименовании пути раздела. Допустим есть такие разделы:
/articles
/articles/php
/articles/html
Админ вводит новый путь для раздела articles, теперь он называется info.
Как сделать
/info
/info/php
/info/html ?
Я реализовал это выборкой всех детей раздела и заменой в цикле то есть примерно так:
Но если детей у раздела штук 50, то 50 запросов, как мне кажется, не очень хорошо
, хотя это будет происходить достаточно редко. Как сделать по-другому?
Начал писать более или менее универсальный код админки для своих проектов =), пока пишу скрипт управления разделами сайта.
В базе использовал nested sets.
Таблица разделов выглядит так:
cid(int) cleft(int) cright(int) clevel(int) ctitle(varchar) cpath(varchar)
Где ctitle - название раздела,cpath - путь раздела от корня, например /catalog/raznoe/tovar. Именно по cpath осуществляется поиск (стоит перенаправление всего в хтаксессе на index.php)
Есть ли смысл добавить сюда поле и хранить в нем например md5(cpath) для ускорения выборки? то есть в index.php делать $sel=md5($query_string) и затем в запросе where md5_cpath=md5($sel)?
Свойства разделов, например, закрытый раздел и т.п., лучше хранить в отдельной таблицы и делать джойн при выборке?
На что следует обратить внимание?
Так же возникла небольшая проблема при переименовании пути раздела. Допустим есть такие разделы:
/articles
/articles/php
/articles/html
Админ вводит новый путь для раздела articles, теперь он называется info.
Как сделать
/info
/info/php
/info/html ?
Я реализовал это выборкой всех детей раздела и заменой в цикле то есть примерно так:
PHP:
//cleft cright - параметры раздела, из которого выбираем детей
$query="SELECT * FROM cat WHERE cleft > '".$cleft."' AND cright < '".$cright."' ORDER BY cleft";
$result = $db->query($query);
while($row = $db->fetch_array($result)){
$epath = str_replace($old_path, $_POST['cat_path'], $row['cpath']);
$uquery = "UPDATE cat SET cpath='".$epath."' WHERE cid='".$row['cid']."' ";
$db->query($uquery);
};
, хотя это будет происходить достаточно редко. Как сделать по-другому?