|
|
|
| Помогите, пожалуйста, как составить запрос.
Есть таблица 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...
Подскажите, пожалуйста, можно ли написать это в одном запросе, чтобы в нём сразу проверялось, по каким столбцам искать.
И как сделать так, чтобы выводились только те строки, которые удовлетворяют всем выбранным категориям. | |
|
|
|
|
|
|
|
для: post
(11.10.2007 в 20:09)
| | Форму сделай такой :
<form action="search.php" method="POST">
Выберите нужные категории поиска: <br>
<input type="checkbox" name="type[]" value="dog_type"> тип договора <br>
<input type="checkbox" name="type[]" value="dog_number"> № договора <br>
<input type="checkbox" name="type[]" value="dog_date"> дата <br>
<input type="checkbox" name="type[]" value="dog_name"> имя файла договора <br>
<input type="checkbox" name="type[]" value="dog_client"> наименование клиента <br>
<br>
<font> Ключевое слово: <br> <br>
<input type="text" name="keyword" >
<input type="image" src="search1.gif" ><br>
</form>
|
скрипт такой:
<?
$keyword=explode(" ", $keyword);
for($i=0; $i<count($keyword); $i++) $kak.=$keyword[$i]."%";
for($i=0; $i<count($_POST[type]); $i++)$where.="(".$_POST[type][$i]." LIKE '%$kak') OR";
$where=substr($where, 0, strlen($where)-2);
$sql="select dog_number from dogovors where $where";
$result = mysql_query($query);
while ($myrow = mysql_fetch_row ($result))
for ($n=0;$n<count($myrow);$n++) {
print "$myrow[$n] ";
}
?>
|
код не проверял, главное чтобы ты суть понял! | |
|
|
|
|
|
|
|
для: fivemusic
(12.10.2007 в 19:36)
| | Спасибо, вы очень помогли!!
вот тут только ошибочка- по-разному запрос назвали $sql и $query, но это мелочь
$sql="select dog_number from dogovors where $where";
$result = mysql_query($query);
в остальном всё работает замечательно, и понятно.
Огромное спасибо. | |
|
|
|