SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 11.10.2007 20:12:00

post
Участник
Зарегистрирован: 25.09.2007
Сообщений: 9

помогите составить запрос

Помогите, пожалуйста, как составить запрос.
Есть таблица dogovors.
Состоит из столбцов dog_id, dog_type, dog_number, dog_date, dog_name.
Из формы  посылаются нужные категории поиска, которые выбирает пользователь.

<form action="search.php" method="POST">
                       
                       Выберите нужные категории поиска: <br>
                       <input type="checkbox" name="type1" value="dog_type"> тип договора <br>
                       <input type="checkbox" name="type2" value="dog_number"> № договора <br>
                       <input type="checkbox" name="type3" value="dog_date"> дата <br>
                       <input type="checkbox" name="type4" value="dog_name"> имя файла договора <br>
                       <input type="checkbox" name="type5" value="dog_client"> наименование клиента <br>
                      &nbsp; <br>
                       <font> Ключевое слово: <br> &nbsp; <br>
                       <input type="text" name="keyword" >
                       <input type="image" src="search1.gif"  ><br>
                       </form>

Каждой категории в checkbox соответствует столбец. 
При выборе нужно искать по конкретным столбцам.
Я сделал с помощью if.
То, что есть:

if  ($type1 == dog_type) {
     $array = explode( " ", $keyword);           //ключевое предложение разбиваем на слова в массив
     for ($i=0;$i<count($array); $i++) {      //$i перебирает слова в ключевом предложении
            $query = "select dog_type
                               from dogovors
                               where dog_type like '%".addslashes($array[$i]) . "%'"  ;
             
            $result = mysql_query($query);
             
             while ($myrow = mysql_fetch_row ($result)) {   
                         for ($n=0;$n<count($myrow);$n++) {
                                print "$myrow[$n] ";
                          }
               }       
       }
             
}

if  ($type2 == dog_number) {
     $array = explode( " ", $keyword);           //ключевое предложение разбиваем на слова в массив
     for ($i=0;$i<count($array); $i++) {      //$i перебирает слова в ключевом предложении
            $query = "select dog_number
                               from dogovors
                               where dog_number like '%".addslashes($array[$i]) . "%'"  ;
             
            $result = mysql_query($query);
             
             while ($myrow = mysql_fetch_row ($result)) {   
                         for ($n=0;$n<count($myrow);$n++) {
                                print "$myrow[$n] ";
                          }
               }       
       }
             
}

и т.д. для $type3, $type4, $type5...

Подскажите, пожалуйста, можно ли написать это в одном запросе, чтобы в нём сразу проверялось, по каким столбцам искать.
И как сделать так, чтобы выводились только те строки, которые удовлетворяют всем выбранным категориям.

Неактивен

 

#2 11.10.2007 20:20:50

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: помогите составить запрос

Это вопрос по тому, как писать на PHP smile

Если хотите объединить в один запрос, попробуйте собрать строку из
"where ($field like '%$value%') or (...)"

Учтите, что такой запрос не будет использовать индексы, а запрос like '$value%' - будет.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson