С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 28.08.2013
Сообщений: 79

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

28.08.2013, 15:56. Показов 4019. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, хочу реализовать запрос поиска по нескольким полям написал пока это
PHP
1
$result = mysql_query("SELECT * FROM re_user WHERE  user_id='$user_id' or fio like '%$fio%' or email like '%$email%')",$db);
либо такое же только вместо OR писал AND
Этот запрос не подходит для меня т.к. иногда поиск происходит по нескольким полям или по одному
Опишите пожалуйста максимально подробно, т.к новичок в этом деле
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.08.2013, 15:56
Ответы с готовыми решениями:

Поиск по сайту: не могу разобраться, как делать поиск по нескольким полям
поиск по одному полу осуществляется вот так: SELECT * from tablepart WHERE `marka` LIKE '%" . $search . "%' or `model` LIKE '%"...

Поиск по нескольким полям
Ребята помогите или хотя бы натолкните на мысль , как написать поиск по базе данных, поиск нужен такой чтобы как на авто сайтах, чтобы...

Поиск по нескольким полям
Подскажите, пожалуйста, как правильно организовать поиск в бд по нескольким полям? Есть форма, в которую вводятся значения для поиска: ...

28
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
28.08.2013, 16:17
OR (или) истинно если хоть один аргумент истенен.
истина ИЛИ ложь = истина
ложь ИЛИ истина = истина
ложь ИЛИ ложь = ложь
истина ИЛИ истина = истина
AND (И) истинно только если все аргумент истены
истина И ложь = ложь
ложь И истина = ложь
ложь И ложь = ложь
истина И истина = истина
Если будете писать через or, то если хоть одно условие подойдет, то mysql решит что запись та, что вам нужна. Если через and, то mysql будет искать только те, что подошли по всем условиям
0
0 / 0 / 0
Регистрация: 28.08.2013
Сообщений: 79
28.08.2013, 16:54  [ТС]
Я понимаю что лучше OR, но когда поле пустое он пишет все данные по этому полю. А как сделать чтобы если поле пустое то это поле исключалось из запроса
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
28.08.2013, 17:02
Цитата Сообщение от soctellad Посмотреть сообщение
Я понимаю что лучше OR
Вам виднее, что вам нужно из этого.
Цитата Сообщение от soctellad Посмотреть сообщение
как сделать чтобы если поле пустое то это поле исключалось из запроса
Ну так если поле поиска пустое к примеру user_id, оно и не попадет в условие WHERE user_id='$user_id', только если переменная $user_id пуста.
0
0 / 0 / 0
Регистрация: 28.08.2013
Сообщений: 79
28.08.2013, 17:24  [ТС]
Тогда подскажите почему при пустом поле выводятся все данные по этому полю
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
28.08.2013, 17:30
Что просите у mysql, то и получаете. Значит попросили пустое поле или совпало другое условие запроса.
0
0 / 0 / 0
Регистрация: 28.08.2013
Сообщений: 79
28.08.2013, 17:45  [ТС]
Так я и спрашиваю, что делать если ничего не ввожу в какое нибудь поле из остальных, то выводится вся база. Как например при одном заполненном поле( из трех ) имя 'елена' выводило всех 'елен', а не всех елен и всю остальную базу
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
28.08.2013, 17:50
Добавлять в запрос только условие по имени, а другие нет
0
Заблокирован
28.08.2013, 20:28
Опишите максимально подробно что вы хотите достичь как новичок в этом деле.
0
0 / 0 / 0
Регистрация: 28.08.2013
Сообщений: 79
29.08.2013, 11:57  [ТС]
Я хочу производить поиск по базе с помощью нескольких полей, причем может быть заполнено только одно, два или несколько полей и в зависимости от этого выводило результат.

Добавлено через 12 часов 57 минут
Цитата Сообщение от sqlnub Посмотреть сообщение
Опишите максимально подробно что вы хотите достичь как новичок в этом деле.

Ответь пожалуйста
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
29.08.2013, 12:05
Помоему ответ уже был дан: не добавлять в условие запроса пустые поля
0
0 / 0 / 0
Регистрация: 28.08.2013
Сообщений: 79
29.08.2013, 12:34  [ТС]
А как реализовать проверку, если поле не пустое то его не добавлять в запрос?
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
29.08.2013, 12:40
Цитата Сообщение от soctellad Посмотреть сообщение
А как реализовать проверку, если поле не пустое
PHP
1
if (!empty($peremennaja))  { ... }
0
0 / 0 / 0
Регистрация: 28.08.2013
Сообщений: 79
02.09.2013, 02:24  [ТС]
PHP
1
2
$result = mysql_query("SELECT * FROM re_user WHERE tariff_id='$tariff_id'",$db);
IF ($USER_ID='') {$result .='AND USER_ID="$USER_ID"'; }
пробовал еще так все равно не помогает, работает только поле tariff_id а если добавить в поле USER_ID, то ничего не выводит
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
02.09.2013, 09:48
1. Сравнение - два знака равно, а не один
2. Переменные в одинарных апострофах не обрабатываются
3. Ресурс необходимо обработать, например, с помощью одной из fetch-функций (mysql_fetch_assoc и т.п.)
0
0 / 0 / 0
Регистрация: 28.08.2013
Сообщений: 79
02.09.2013, 14:18  [ТС]
KOPOJI, все варианты пробовал не помогает.
Помогите пожалуйста заплачу
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
02.09.2013, 15:05
soctellad, ну ты беспомощный как ребенок.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?
$fields = array(
  #запоняем поля field => variable name
  'user_id' => 'user_id',
  'fio' => 'fio',
  'email'  => 'email'
);
$query = array();
foreach( $fields as $field => $variable ) {
  if (!empty($$variable)) $query[] = "`$field` like '%". mysql_real_escape_string($$variable) ."%'";
}
 
try{
 
  if (sizeof($query ) == 0) {
   throw new exception('не заполенно не одно поле');
  }
  else if(sizeof($query ) == 1){
    $where = current($query);
  }
  else {
    $where = implode(' or ' , $query );
  }
  
  $query = 'SELECT * FROM re_user WHERE ' . $where;
  #здесь код если ошибок нет - работаем с запросом $query
}
catch(exception $e){
  #здесь код вывода ошибок
}
1
0 / 0 / 0
Регистрация: 28.08.2013
Сообщений: 79
02.09.2013, 15:22  [ТС]
Спасибо большое, прям огромное, но есть проблемка как чтобы для полей user_id и tariff_id использовалось не LIKE а =
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
02.09.2013, 15:25
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
$fields_like = array(
  #field => variable
  'fio' => 'fio',
  'email'  => 'email'
);
$fields_is = array(
  #field => variable
  'user_id' => 'user_id',
);
 
$query = array();
foreach( $fields_like as $field => $variable ) {
  if (!empty($$variable)) $query[] = "`$field` like '%". mysql_real_escape_string($$variable) ."%'";
}
foreach( $fields_is as $field => $variable ) {
  if (!empty($$variable)) $query[] = "`$field` = '". mysql_real_escape_string($$variable) ."'";
}
...
1
Заблокирован
02.09.2013, 20:22
Началось с поиска, а кончилось проверкой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.09.2013, 20:22
Помогаю со студенческими работами здесь

Поиск по нескольким полям в БД
у меня не получается реализовать поиск по нескольким полям в бд $result = mysql_query (&quot;SELECT id,title, description, text, view,...

Как сделать поиск по нескольким полям?
Я уже искал различные темы, и в интернете искал. Но я не понимаю того что там пишут. Вернее поисковик не совсем правильно работает как...

Order по нескольким полям
Мне нужно сделать сортировку по нескольким полям, допустим чтобы по убыванию цены и по возрастанию даты, БД использую MySQL MyISAM поля INT...

Сортировка по нескольким полям
Здравствуйте, уважаемые программисты. Ребята, возникла такая сложность, вроде бы и несложный вопрос, но не могу придумать, как его...

Выбор по нескольким полям таблицы
Всем привет! Вот такая вот задача у меня... Есть таблица (cents) вот такого вида: http://picone.ru/thumbs/20-aztdizrt.jpg И...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Изучаю 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% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru