Задавайте вопросы, мы ответим
Вы не зашли.
Помогите, пожалуйста, как составить запрос.
Есть таблица 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>
<br>
<font> Ключевое слово: <br> <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...
Подскажите, пожалуйста, можно ли написать это в одном запросе, чтобы в нём сразу проверялось, по каким столбцам искать.
И как сделать так, чтобы выводились только те строки, которые удовлетворяют всем выбранным категориям.
Неактивен
Это вопрос по тому, как писать на PHP
Если хотите объединить в один запрос, попробуйте собрать строку из
"where ($field like '%$value%') or (...)"
Учтите, что такой запрос не будет использовать индексы, а запрос like '$value%' - будет.
Неактивен