За последние 24 часа нас посетили 57257 программистов и 1683 робота. Сейчас ищут 1205 программистов ...

Проблема с запросом к базе

Тема в разделе "PHP для новичков", создана пользователем zevilz, 2 апр 2012.

  1. zevilz

    zevilz Активный пользователь

    С нами с:
    14 июн 2010
    Сообщения:
    182
    Симпатии:
    0
    Есть вот такой код для выборки из базы по ключевому слову из разных полей таблицы:
    Код (Text):
    1. $result_search = mysql_query ("SELECT * FROM videos WHERE text LIKE '%".implode($keywords, "%' OR text LIKE '%")."%' OR title LIKE '%".implode($keywords, "%' OR title LIKE '%")."%' OR meta_d LIKE '%".implode($keywords, "%' OR meta_d LIKE '%")."%' OR meta_k LIKE '%".implode($keywords, "%' OR meta_k LIKE '%")."%'");
    Хочется сделать фильтрацию по категории. Создана переменная $filter_cat, которая должна соответствовать содержимому колонки `cat`. Добавляю условие в запрос:
    Код (Text):
    1. $result_search = mysql_query ("SELECT * FROM videos WHERE text LIKE '%".implode($keywords, "%' OR text LIKE '%")."%' OR title LIKE '%".implode($keywords, "%' OR title LIKE '%")."%' OR meta_d LIKE '%".implode($keywords, "%' OR meta_d LIKE '%")."%' OR meta_k LIKE '%".implode($keywords, "%' OR meta_k LIKE '%")."%' AND cat=$filter_cat");
    Никаких изменений не происходит. Если это условие поставить сразу после WHERE, то страница вообще не грузится. Как добавить фильтрацию по колонке `cat`?
     
  2. viphost

    viphost Активный пользователь

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    а что в полях cat содержится, цифры или название?
    Так пробовали
    Код (Text):
    1. $result_search = mysql_query
    2.      ("SELECT * FROM videos WHERE text LIKE '%".implode($keywords, "%' OR text LIKE '%")
    3.      ."%' OR title LIKE '%".implode($keywords, "%' OR title LIKE '%")."%' OR meta_d LIKE '%"
    4.      .implode($keywords, "%' OR meta_d LIKE '%")."%' OR meta_k LIKE '%".implode($keywords, "%' OR meta_k LIKE '%")."%' AND cat='$filter_cat'");
     
  3. zevilz

    zevilz Активный пользователь

    С нами с:
    14 июн 2010
    Сообщения:
    182
    Симпатии:
    0
    Подставил условие для каждого "ИЛИ"
    Код (Text):
    1. $result_search = mysql_query ("SELECT * FROM videos WHERE text LIKE '%".implode($keywords, "%' AND cat=$filter_cat OR text LIKE '%")."%' AND cat=$filter_cat OR title LIKE '%".implode($keywords, "%' AND cat=$filter_cat OR title LIKE '%")."%' AND cat=$filter_cat OR meta_d LIKE '%".implode($keywords, "%' AND cat=$filter_cat OR meta_d LIKE '%")."%' AND cat=$filter_cat OR meta_k LIKE '%".implode($keywords, "%' AND cat=$filter_cat OR meta_k LIKE '%")."%' AND cat=$filter_cat");}
    Сейчас уже работает
     
  4. viphost

    viphost Активный пользователь

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    ИМХО не есть гуд, запрос атомный, для совмещения двух таблиц и одной строчки достаточно