Пишу социальный портал типа "Вконтакте" и столкнулся с такой проблемой как поиск людей.
Объясню упрощенно:
В MySQL есть таблица users в которой колонки name, surname, nick.
Думаю всем всё понятно что это за таблица и колонки в ней.
На странице поиска есть три поля - Имя, Фамилия и Ник, по которым можно найти определенного человека в БД. Но проблема в том, что я не могу понять как организовать такой поиск. Если я заполню все три поля (фамилю, имя и ник), то поиск даст результат, но а если я заполню лишь одно из полей (к принмкру только Имя), то база не выдаст всех пользователей с именем, которое я ввёл, т.к. остальные поля (Фамилия и Ник) будут пустыми.
Подскажите пожалуйста, как можно реализовать такой поиск (фильтр) пользователей. Передумал уже все способы.
Спасибо.
Спустя 30 минут, 10 секунд (14.09.2009 - 01:51) kirik написал(а):
Цитата (YanBess @ 13.09.2009 - 17:21) |
то база не выдаст всех пользователей с именем, которое я ввёл, т.к. остальные поля (Фамилия и Ник) будут пустыми. |
C чего это?
Вы индексы уже расставляли?
Спустя 17 минут, 29 секунд (14.09.2009 - 02:08) SunSet написал(а):
SELECT * FROM users WHERE name LIKE '$name' OR surname LIKE '$surname' OR nick LIKE '$nick'
Должно работать
Должно работать

Спустя 11 часов, 38 минут, 15 секунд (14.09.2009 - 13:46) YanBess написал(а):
Цитата (SunSet @ 13.09.2009 - 23:08) |
SELECT * FROM users WHERE name LIKE '$name' OR surname LIKE '$surname' OR nick LIKE '$nick' Должно работать ![]() |
Ой простите за мою неопытность!!!

А я всё искал ответ в условиях if

Спасибо - всё работает!!!!

Спустя 3 часа, 46 минут, 46 секунд (14.09.2009 - 17:33) Gradus написал(а):
Цитата |
А я всё искал ответ в условиях if |
PHP |
if($name) $zap= '`name` LIKE \''.$name.'\''; |
Первый вариант солиднее

Спустя 1 час, 52 минуты, 45 секунд (14.09.2009 - 19:26) glock18 написал(а):
PHP |
if($name) $zap= '`name` LIKE \''.$name.'\''; |
сработает только последнее условие. оно так и задумано?

Спустя 6 часов, 2 минуты, 52 секунды (15.09.2009 - 01:29) Gram написал(а):
парва
Спустя 1 день, 10 минут, 39 секунд (16.09.2009 - 01:40) Gradus написал(а):
Цитата |
сработает только последнее условие. оно так и задумано? |
Не внимательно прочёл пост.
Тогда первое что в голову пришло

PHP |
if($name) $zap[]= '`name` LIKE \''.$name.'\''; |
Спустя 38 минут, 39 секунд (16.09.2009 - 02:18) kirik написал(а):
Gradus
Кто же через for элементы массива "склеивает"? implode чем не угодил?
Кто же через for элементы массива "склеивает"? implode чем не угодил?

_____________
Заснул на клавиатуре, если отвечаю, значит, что-то снится!!![FONT=Courier][COLOR=red]