Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Срочно, пожалуйста, помогите составить запрос
 
 автор: post   (11.10.2007 в 20:09)   письмо автору
 
 

Помогите, пожалуйста, как составить запрос.
Есть таблица 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...

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

   
 
 автор: fivemusic   (12.10.2007 в 19:36)   письмо автору
 
   для: 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>
&nbsp; <br>
<font> Ключевое слово: <br> &nbsp; <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($where0strlen($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] ";
}
?>


код не проверял, главное чтобы ты суть понял!

   
 
 автор: post   (14.10.2007 в 13:36)   письмо автору
 
   для: fivemusic   (12.10.2007 в 19:36)
 

Спасибо, вы очень помогли!!
вот тут только ошибочка- по-разному запрос назвали $sql и $query, но это мелочь

$sql="select dog_number from dogovors where $where";
$result = mysql_query($query);

в остальном всё работает замечательно, и понятно.

Огромное спасибо.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования