[HELP]mod_rewrite ЧПУ

Тема в разделе "PHP", создана пользователем saylar_06, 3 дек 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. saylar_06

    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, соответствено будет ошибка...
     
  2. pitkina

    pitkina

    Регистр.:
    1 апр 2007
    Сообщения:
    253
    Симпатии:
    176
    например можно создать массив соответствия 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); }
      }
     
    saylar_06 нравится это.
Статус темы:
Закрыта.