За последние 24 часа нас посетили 22845 программистов и 1264 робота. Сейчас ищут 726 программистов ...

SEF Url через Базу данных

Тема в разделе "PHP и базы данных", создана пользователем Enclave_oO, 12 дек 2018.

Метки:
  1. Enclave_oO

    Enclave_oO Новичок

    С нами с:
    12 дек 2018
    Сообщения:
    2
    Симпатии:
    0
    В базе есть таблица "sef_url" с полями "old_url" и "new-url"

    Необходимо, чтобы при запросе ссылки site.domain/something-interesting на сайте, из index.php шло обращение к базе с поиском необходимой строки, совпадающей с new_url и подставляло в обработчик маршрутов old_url. И если подставить значения при условии их наличия - дело простое, то насчёт обращения к базе, поиска необходимой строки и "изъятия" соседней - тут у меня проблема, так как я плохо знаю синтаксис запросов к mySql.

    Как понимаю:
    1. Поиск в базе "new_url"
    2. Получение индекса строки $1
    3. Получить "old_url" из строки с индексом $1
    4. Присвоить $current_url = $old_url
    5. Отправить обработчик маршрутов
     
    #1 Enclave_oO, 12 дек 2018
    Последнее редактирование: 12 дек 2018
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    736
    Адрес:
    Татарстан
    так и делай, пункт 2 b 3 не нужен, сразу d 1 одним запросом делаются
    Код (Text):
    1. SELECT old_url FROM t WHERE new_url = 'bla-bla'
     
  3. Enclave_oO

    Enclave_oO Новичок

    С нами с:
    12 дек 2018
    Сообщения:
    2
    Симпатии:
    0
    У меня получилось как-то вот так:
    PHP:
    1.     public function route() {
    2.         $required_url = ($_SERVER["REQUEST_URI"]);
    3.         $url_result = mysql_query("SELECT alias_old FROM alias_url
    4.                            WHERE alias_new='$required_url' ");
    5.  
    6.         if ($url_result !='')
    7.         {
    8.             $required_url = $url_result;
    9.         } elseif ($required_url=='/') { //Если открыта главная страница
    10.             include_once "index1.php"; //Открываем файл главной страницы
    11.         } elseif (isset($this->_route[trim($required_url, "/")])){ //Если маршрут задан
    12.             include_once $this->_route[trim($required_url, "/")]; //Открываем файл, для которого установлен маршрут
    13.         }
    14.         else return false; //Если маршрут не задан
    15.  
    16.         return true;
    17.     }
    Но сайт выдаёт ошибку 500, на любой странице.

    Класс обработки ЧПУ был взят на просторах интернета
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    736
    Адрес:
    Татарстан
    1. не надо сразу подставлять в запрос переменные ... почитай про SQL иньекции
    2. запросы к БД не так выполняются, так-же поищи как это делается именно в php - надо сначала соединиться к бд, потом правильно отправить запрос, потом правильно обработать результат

    то что где то взят какой-то класс вообще не говорит что он нормальный, или что вы его правильно используете
    маршрутизировать через
    Код (Text):
    1. include_once "index1.php"
    - это вообще отстой, не для того эта инструкция

    + что мешает мне сразу в адресной строке index1.php указать

    кароче дурдом, нужны хотя-бы базовые знания и умения