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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Поиск по нескольким полям

Сообщения:  [1-10]   [11-14] 

 
 автор: Trianon   (27.12.2010 в 12:32)   письмо автору
 
   для: Vincento   (27.12.2010 в 11:54)
 

Было предложено создать три отдельных поля формы.
Вы пишете: ну собственно так и сделал. разделил регуляркой строку поиска по пробелам.
Разница есть?

  Ответить  
 
 автор: Vincento   (27.12.2010 в 11:54)   письмо автору
 
   для: Trianon   (26.12.2010 в 18:03)
 

что именно я не прочел? советы многоуважаемых я принял во внимание. Я просто хотел узнать если есть возможность икать как - "%any%" то можно ли одним запросом пройтисьпо всем полям? и все.

  Ответить  
 
 автор: Trianon   (26.12.2010 в 18:03)   письмо автору
 
   для: Vincento   (26.12.2010 в 15:03)
 

Вы, очевидно, либо не прочли, что Вам написали, либо не захотели понять.

  Ответить  
 
 автор: Vincento   (26.12.2010 в 15:03)   письмо автору
 
   для: cheops   (26.12.2010 в 13:31)
 

ну собственно так и сделал. разделил регуляркой строку поиска по пробелам, потом по количеству разделенных слов сделал соотв. количество запросов ,выбрав id, потом тупо сравнивал id - где совпадали - слепливал в кучу. Соответственно вывод если количество совпавших id > 1 ))))) только думаю наверное можно как-то проще сделать! ? ))

  Ответить  
 
 автор: cheops   (26.12.2010 в 13:31)   письмо автору
 
   для: Vincento   (26.12.2010 в 12:18)
 

Вместо одного запроса вам нужно делать три отдельных поля для "Иванов", для "Иван" и для "1", и соответственно три переменные. Так как вместо "Иванов Иван 1" могут ввести "Иван 1 Иванов" и различить порядок у вас нет возможности, да и пользователи будут путаться и ничего не найдут.

  Ответить  
 
 автор: lightning.say   (26.12.2010 в 13:20)   письмо автору
 
   для: Vincento   (26.12.2010 в 12:18)
 

.

  Ответить  
 
 автор: Vincento   (26.12.2010 в 12:18)   письмо автору
 
   для: cheops   (26.12.2010 в 11:28)
 

Да я понял Вас, но вы мне говорите все о том поиске что был приведен тут уже неоднократно.

Смотрите - есть таблица - |Фамилия|Имя|Отчество|Кабинет|
есть запись |Иванов|Иван|Иванович|1
и есть запрос "Иванов Иван 1" - к примеру

я реализовал поиск пока именно так -

<?php
$zap_poi 
"SELECT * FROM table  WHERE fam LIKE '%$poisk_slovo%' OR  name LIKE '%$poisk_slovo%' OR   sour LIKE '%$poisk_slovo%' OR  dolj LIKE '%$poisk_slovo%' OR  
otdel LIKE '%
$poisk_slovo%' OR  cab LIKE '%$poisk_slovo%'";  
?>


и он выдает мне все записи где есть Ивановы и где есть Иваны - это хорошо, но мне нужна 1 запись )))) я уже реализовал поиск именно 1 этой записи - но немного сложно получилось - много кода.

Я просто думал что можно вытащить единственное соответствие с помощью одного запроса

  Ответить  
 
 автор: cheops   (26.12.2010 в 11:34)   письмо автору
 
   для: lightning.say   (26.12.2010 в 10:27)
 

Да, корректно.

PS Могут возникнуть сложности с различными кодировками переменной @s и полей таблицы table, но их можно разрешить при помощи функции CONVERT().

  Ответить  
 
 автор: cheops   (26.12.2010 в 11:28)   письмо автору
 
   для: Vincento   (25.12.2010 в 20:17)
 

Для точного соответствия действительно нужно убирать символы %, хотя бы для имени
<?php  
$zap_poi 
"SELECT * FROM table  
WHERE fam LIKE '%
$poisk_slovo%' OR 
name LIKE '
$poisk_slovo' OR 
sour LIKE '%
$poisk_slovo%' OR 
dolj LIKE '%
$poisk_slovo%' OR 
otdel LIKE '%
$poisk_slovo%' OR 
cab LIKE '%
$poisk_slovo%'";  
?>

А вообще обычно реализуют два вида поиска - просто строка и запрос, который был приведен выше и расширенный поиск, где для каждого из полей таблицы предусмотрен свой элемент управления - в этом случае можно более точно сформировать запрос, в том числе выбирая логику поиска.

  Ответить  
 
 автор: lightning.say   (26.12.2010 в 10:30)   письмо автору
 
   для: Vincento   (25.12.2010 в 20:17)
 

точное, а без %-ов разве ищется не точное соответствие?

  Ответить  

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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