|
8 / 8 / 0
Регистрация: 01.05.2009
Сообщений: 86
|
||||||||||||||||
Как сделать поиск в МуСКЛе через ПХП по неск полям?01.05.2009, 16:57. Показов 2877. Ответов 10
Метки нет (Все метки)
Здравствуйте все!
у меня тут такая проблема... Нужно организовать поиск по БД МуСКЛ через ПХП-скрипт по нескольким полям... Есть 5 полей... Пользователь может вводить данные в любые из них (может в одно, а может и в несколько), и в соответствие с этим ему должен будет выдаваться результат. я пытался сделать это самостоятельно... 2-мя способами... Здесь приведу второй. ---ФОРМА---
---СКРИПТ---
Должно работать по тому принципу что если пользователь не вводит в любые из полей (кроме 1-го id о нем отдельно) то значения переменным, соотв этим полям в скрипте принимают значение "процент" (%) что вкупе с LIKE означает любой. Если же пользователь не вводит значение в первую ячейку, то запрос остается без изменений... Если вводит - то к запросу с помощью конкатенации (соед строк) добавляется строчка " AND id = '$id'". Скрипт принципиально работает не так как надо - он во всех случаях выдает только таблицу из 2-х ячеек - id и name Помогите пожалуйста!!! Может кто ошибку найдет? Заранее благодарен Добавлено через 4 часа 18 минут 43 секунды Всем большое спасибо за помощь! Я разобралсо!!!
0
|
||||||||||||||||
| 01.05.2009, 16:57 | |
|
Ответы с готовыми решениями:
10
Как сделать поиск по всем полям DbGrid через ADOtable? Как сделать поиск по полям в БД? Как сделать поиск по нескольким полям? |
|
Телепат
724 / 118 / 8
Регистрация: 28.04.2009
Сообщений: 442
|
|
| 01.05.2009, 17:30 | |
|
не AND а OR использовать надо...
В твоем случае результат будет только в том случае, если будет найдено по всем полям в таблице.. Проверь что именно пользователь ищет (какое поле заполнил) и в соответствии с этим полем ищи по нужной ячейке. Только не понял зачем закоментировал все там? Да и в целях безопасности я считаю не стоит писать о том что сервер недоступен или еще чтото.. лично я пишу сообщение об ошибке (код свой ставлю) а по отчету вижу сам в чем проблема, пользователю лишь можно сказать что функция временно недоступна...
0
|
|
|
8 / 8 / 0
Регистрация: 01.05.2009
Сообщений: 86
|
|
| 01.05.2009, 20:25 [ТС] | |
|
Да закомментировал я эт потому что думал проверить без этого... Терь у меня все получилось терь у меня проблема Как организовать в форме ввода данных раскрывающийся списог в том случае, если поле является внешним ключом... чет пока ничего не получается(((
Добавлено через 4 минуты 27 секунд Милый Враг, Так у меня ж цель создать универсальный поиск... Если OR будет то юзер как я понимаю будет вводить в поле и ему будет выдаваться инфа по принципу ИЛИ... То есть допустим он ввел имя ткое-то и дату рождения такую-то... Ему будут выведены люди с таким-то именем ИЛИ с такой-то датой рождения... А тутименно чтоб с таким именем И с такой датой рождения...
0
|
|
|
Телепат
724 / 118 / 8
Регистрация: 28.04.2009
Сообщений: 442
|
|
| 03.05.2009, 20:17 | |
|
в любом случае с AND не пойдет.. в твоем примере надо делать так...
например пользователь ищет как ты говорил имя с определенной датой.. к примеру "Вася 1983" надо я думаю вначале найти вася, и затем произвести выборку из базы, и отобразить только поля в которых присутствует "1983" опять я повторю, твой код не правильно будет работать.. например у тебя таблица id| name | date | sity |age| ----------------------------- 0 | Вася | 1982 |Москва| 26 | 1 | Петя | 1980 | Баку | 28 | 2 | Таня | 1983 | Питер | 25 | 3 | Маша| 1990 | Крым | 18 | ----------------------------- В твоем примере если пользователь хочет найти имя "Вася" 1982 года рождения, то он должен вписать Вася, 1982, Москва, 26. а сто если пользователь не знает в каком городе этот Вася живет? Тогда твой код не вернет результата, результат будет если будут введены все поля - name AND date AND sity AND age..... это был просто пример Добавлено через 4 минуты 11 секунд Но если это для какой то организации, то есть если количество записей будет не слишком большим - 50-100 записей, то можно сделать выпадающий список. Допустим ты из списка выбираешь ися Вася (если он присутствует в БД), рядом выбираешь год дождения, и др. данные.. либо. Пользователь входит на ваш сайт, при загрузке формируется страница в элементами выпадающего списка. Пользователь из списка выбирает дату рождения или возраст и страну или регион, вписывает нужное имя и ищет. Кстати твой вариант будет работать только в том случае, если пользователю дать возможность не заполнять какое то поле (оставить пустым например поле "город") и при этом исключить поиск по полю Sity в таблице, если надо..
1
|
|
|
8 / 8 / 0
Регистрация: 01.05.2009
Сообщений: 86
|
|
| 03.05.2009, 21:26 [ТС] | |
|
Да нет...все работает как надо... Допустим ввожу имя и год рождения...Мне по этим данным выдаются все васи с 1982 г. рождения, живущие в разных городах и т.п.
0
|
|
|
365 / 68 / 2
Регистрация: 25.09.2008
Сообщений: 401
|
||||||
| 05.05.2009, 18:46 | ||||||
|
Милый Враг, на самом деле там можно взять сделать доп. проверку переменных, типа если поле оставили пустым, то в переменную записывать "%".
тогда LIKE будет выбирать все возможные записи +) хотя я могу ошибаться, т.к. работаю с ораклом а с мусклом только балуюсь) поэтому регулярно пытаюсь что-то из оракла в мускл подставить +)) вобщем в оракле такой фокус с "%" работает точно)) во! счас нашёл, у него же вот каменты:
так что работает +) Orc, по поводу раскрывающегося списка, я к сожалению счас на память непомню синтаксиса... там в хтмл-е идёт тег открытия списка, потом идут теги со значениями списка, и соответственно закрывающий тег +) просто генерируй в пхп в цикле весь список с тегами в какую-нить переменную и через эхо прям в лоб выводи+) оно схавает и отобразит правильно +)
1
|
||||||
|
67 / 60 / 25
Регистрация: 05.05.2009
Сообщений: 131
|
||||||
| 05.05.2009, 21:18 | ||||||
|
Зачем лишний раз напрягать Мускул лайком? если пользователь не ввёл какое-то поле, то его вообще не надо учитывать в запросе. можно сделать так:
1
|
||||||
|
8 / 8 / 0
Регистрация: 01.05.2009
Сообщений: 86
|
|
| 07.05.2009, 16:18 [ТС] | |
|
Ну если таблица одна то можно легко поиск по неск полям осуществить... А во если таблица не одна то тут уже сложнее(
0
|
|
|
Телепат
724 / 118 / 8
Регистрация: 28.04.2009
Сообщений: 442
|
|
| 30.05.2009, 00:53 | |
|
Ничего сложного нету.. надо просто юзать сложные запросы... Мускул, точнее язык SQL поддерживает обьединение таблиц.. то есть если у тебя есть несколько таблиц, то их можно обьединить в одном запросе и работать с ними как с одной)))
0
|
|
|
0 / 0 / 0
Регистрация: 17.07.2015
Сообщений: 7
|
|||||||||||
| 18.07.2015, 16:06 | |||||||||||
|
Darevill,
Здравствуйте! Использовала вашу подсказку в своем коде поиска по базе данным. У меня тоже несколько полей поиска и если некоторые не заполнены их нужно просто опускать. Код отлично работает с одной ошибкой, если ни одно поле не заполнено выдает ошибку, посмотрите, пожалуйста, в чем может быть загвозка?
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\rosrest.org\www\bd_spet******ti_ otchetnost_result.php on line 75 Добавлено через 18 минут Darevill, Передала свой запрос на поиск данных из нескольких таблиц, вообще перестало работать (((((
0
|
|||||||||||
|
67 / 60 / 25
Регистрация: 05.05.2009
Сообщений: 131
|
|||||||||||
| 22.07.2015, 21:09 | |||||||||||
|
6 лет прошло однако
![]() Если есть вариант, что ни один параметр не будет передан, тогда нужно проверять такую ситуацию и не выполнять запрос вообще. Например так:
0
|
|||||||||||
| 22.07.2015, 21:09 | |
|
Помогаю со студенческими работами здесь
11
Нужно сделать неск мелких тестов и финальный из них. Как? Сделать поиск по произвольным полям Поиск по сайту: не могу разобраться, как делать поиск по нескольким полям что лучше для виполненя: пхп как модул или пхп как CGI ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|