[HELP]mod_rewrite ЧПУ

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

saylar_06

Создатель
Регистрация
7 Мар 2009
Сообщения
42
Реакции
0
Всем привет, возникла проблема с созданием ЧПУ...

С ними я немного знаком и могу превратить ссылку вида:

index.php?cat=1 /category/1/
index.php?cat=1&page=2 /category/1/page/2/

а вот как быть если мне нужно выводить не /category/1/ а /category/marketing/

т.е как это выглядит преблизительно? (без основных проверок)
PHP:
if (isset($_GET["cat"])) {
    $cat = $_GET["cat"];
}
if (!isset($cat) or empty($cat)) {
    echo "вы ошиблись";
} else {
  $q0 = "SELECT * FROM topics WHERE cat='$cat'";
  $q1 = mysq_query($q0);
  $q2 = mysql_fetch_assocs($q1);
  }
т.е есть таблица topics (id cat title)
в переменну cat попадает число мы сравниваем его и выводим соответствующие заметки, а нужно (да и вообще возможно ли это?) сделать так чтоб в URL был title а сравнивала она по cat

В первом случае /category/1/ в переменну cat попала 1
/category/marketing/ а тут в переменную cat попадет marketing, соответствено будет ошибка...
 
например можно создать массив соответствия title=>cat, и если $cat слово - заменять на число (по массиву)

PHP:
if (isset($_GET["cat"])) {
    $cat = $_GET["cat"]; 
}
if(!is_numeric($cat)) { $cat_arr = array('marketing'=>1,'finance'=>2,'investing'=>3); // массив соответствия
if(isset($cat_arr[$cat])) $cat = $cat_arr[$cat];
else $cat=''; }


или другой вариант: в зависимости от типа $cat выбирать по title/cat

PHP:
} else {
  if(is_numeric($cat)) $q0 = "SELECT * FROM topics WHERE cat='$cat'";
  elseif(strlen($cat) AND !preg_match('/\W/',$cat)) $q0 = "SELECT * FROM topics WHERE title='$cat'";
  else echo "error";
  
  if(isset($q0)) {
  $q1 = mysql_query($q0);
  $q2 = mysql_fetch_assoc($q1); }
  }
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху