Поиск и условия с логикой помогите

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

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

    pronax Постоялец

    Регистр.:
    21 сен 2008
    Сообщения:
    146
    Симпатии:
    10
    Привет всем!
    Пишу поиск по сайту, всё передаётся get запросами, вот хочу посоветоваться, так как условий очень много, хотел бы узнать как это реализовать попроще, потому как описывать все "условия поиска", мне кажется не правильным.
    Пример, как я знаю сделать можно:
    PHP:
    query1 'SELECT * WHERE title = $title';
    query2 'SELECT * WHERE title = $title and cost = $cost';
    query3 'SELECT * WHERE title = $title and cost = $cost and brand = $brand';
    query4 'SELECT * WHERE title = $title and brand = $brand';
    и т.п. но там слишком много будет и каждый случай не проверить, как это сделать более правильным путём?
     
  2. Super_BOT

    Super_BOT

    Регистр.:
    21 апр 2009
    Сообщения:
    256
    Симпатии:
    28
    Я составлял строку запроса динамически, то есть, если пользователь тыкнул по чекбоксу brand то дописываем к исходному запросу and brand=$brand. Но получилось тоже не очень удобно, но проще чем искать все возможные комбинации
     
    pronax нравится это.
  3. pronax

    pronax Постоялец

    Регистр.:
    21 сен 2008
    Сообщения:
    146
    Симпатии:
    10
    можно пример?
     
  4. horpah

    horpah

    Регистр.:
    21 июн 2010
    Сообщения:
    200
    Симпатии:
    55
    ПРимер в общем виде:
    PHP:
    $query='SELECT * FROM tablename WHERE 1=1'
    if($title)
      
    $query.=" AND `title='$title' ";
    if(
    $cost)
      
    $query.=" AND `cost`='$cost' "
      . . . . . . . . . . . . . 
    if(
    чекбокс какой-то отмеченныйлибо текстовое поле не пустое)
      
    $query.=" AND `поле`='значение' "
    $res=mysql_query($query);
    PS. И не забываем конечно про SQL-injection
     
    pronax нравится это.
  5. pronax

    pronax Постоялец

    Регистр.:
    21 сен 2008
    Сообщения:
    146
    Симпатии:
    10
    Спасибо за пример.
    нашёл в соседней теме примерно тоже самое:
    PHP:
    $fnd = ($fcountry != '' ' and country = "'.addslashes($fcountry).'"' '').
           (
    $fcity != '' ' and city = "'.addslashes($fcity).'"' '').
           (
    $ffound != ''  ' and found = "'.addslashes($ffound).'"' '').
           (
    $ffor != ''  ' and forwhat = "'.addslashes($ffor).'"' '');

    $zapros "SELECT * FROM users WHERE 1 ".$fnd;  
    только вот вопрос с именно динамическим вопросом остался, потому как если добавлять ещё поля, то нужно дописывать php код, лучше решение чем моё, но всё же интересует более легкий, есть варианты?
     
  6. trooll

    trooll PHP кодер

    Регистр.:
    22 дек 2008
    Сообщения:
    503
    Симпатии:
    116
    Если вы пока что не сильно шпрехаете на логике составления МySQL запросов и владеете PHP, а задачу необходимо решить в кратчайшие сроки.
    Я бы вам до поры до времени посоветовал, составлять отдельные запросы для каждого случая, а параллельно экспериментировать с динамическим формированием MySQL запросов средствами PHP.
     
Статус темы:
Закрыта.