[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поиск записи в MySQL
PiratXXX
Здравствуйте знатоки!!!

Я делаю поиск пользователей на сайте! Поиск осуществляется по таким категориям как логин, имя, фомилия, и т.д. Но суть в том что можно делать поиск по одной категории или по нескольким(например только по логину)

Нужно дать запрос чтобы искало записи где логин равен логину, а имя может принимать любое значение!

Например:


$Query = mysql_query("SELECT * FROM `UsersList` WHERE `Login` = '".$Login."' AND `Name` = '(и вот тут надо задать что имя равно любому значению!)'");


Надеюсь объяснил понятно!
И вообще такое возможно?

Зараннее благодарен!



Спустя 1 минута, 49 секунд (16.12.2010 - 14:01) ИНСИ написал(а):
PiratXXX просто в параметре WHERE поставь`Login` = '".$Login."' и все..... будет искать только логин, где имя может иметь любое значение.

Спустя 25 секунд (16.12.2010 - 14:01) Lenarfate написал(а):
не ищи просто по имени и все

Спустя 1 минута, 6 секунд (16.12.2010 - 14:02) ИНСИ написал(а):
запрос будет таким:
$Query = mysql_query("
SELECT *
FROM `UsersList`
WHERE `Login` = '
{$Login}'
"
);

Спустя 3 минуты, 40 секунд (16.12.2010 - 14:06) PiratXXX написал(а):
welbox2

Нет, так не надо!

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

Спустя 8 минут, 21 секунда (16.12.2010 - 14:14) SlavaFr написал(а):
Цитата (PiratXXX @ 16.12.2010 - 11:06)
welbox2

Нет, так не надо!

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

ну так если ты динамически определяеш какое условие не заполненно, то в чем проблема только заполненные в запросе использовать?

К стате ты задумывался над тем, что выдаст запрос, если написать что все равно какой логин и все равно какое имя?
По моим подсчетам будет выданно все!

Спустя 2 минуты, 8 секунд (16.12.2010 - 14:17) Семён написал(а):
Google:
Новичку: Динамически составляемый SQL запрос.
Продвинутому: Макроподстановка

Спустя 6 минут, 6 секунд (16.12.2010 - 14:23) ИНСИ написал(а):
PiratXXX надо было сразу тогда объяснить...

Тогда вот так:
$where = array();
if($login && $login != '') $where[] = "`login` = '{$login}'";
if($name && $name != '') $where[] = "`name` = '{$name}'";

$Query = mysql_query("
SELECT *
FROM `UsersList`
WHERE "
.implode(' AND ',$where)."
"
);

Спустя 51 минута, 9 секунд (16.12.2010 - 15:14) PiratXXX написал(а):
welbox2

СПАСИБО ОГРОМНОЕ! РАБОТАЕТ!

А что означает скобочки {} в строке

if($login && $login != '') $where[] = "`login` = '{$login}'";


+

Спустя 4 минуты, 36 секунд (16.12.2010 - 15:18) ИНСИ написал(а):
PiratXXX запрос пройдет быстрее, чем будешь использовать тантактенацию.

Спустя 1 минута, 30 секунд (16.12.2010 - 15:20) PiratXXX написал(а):
блин как это я не допер!
а ведь пользовался функцией implode много раз!

ну как всегда все гениально - просто)))

Спустя 4 минуты, 5 секунд (16.12.2010 - 15:24) PiratXXX написал(а):
welbox2

тантактенация что это? это когда переменную выделяешь вот так
SELECT * FROM `UsersList` WHERE `Login` = '".$Login."'


или нет?
в гогле вообще такого слово ненаходит((

и это получается что и в других запросах лучше так делать!?

Спустя 17 минут, 53 секунды (16.12.2010 - 15:42) ИНСИ написал(а):
PiratXXX тантактенация - это присоединении другими словами.

Спустя 5 минут, 23 секунды (16.12.2010 - 15:47) inpost написал(а):
welbox2
Глянь на эту мелочь, так лучше =)
$where = array();
if($login && $login != '') $where[] = "`login` = '{$login}'";
if($name && $name != '') $where[] = "`name` = '{$name}'";
$start = count($where) > 0 ? 'WHERE '.implode(' AND ',$where) : '' ;
$Query = mysql_query("SELECT *
FROM `UsersList`
"
.$start
);

Спустя 6 минут, 45 секунд (16.12.2010 - 15:54) Семён написал(а):
laugh.gif ROFL тантактенация

Спустя 13 минут, 38 секунд (16.12.2010 - 16:08) ИНСИ написал(а):
inpost тогда глянь и на эту мелочь :)

$Query = mysql_query("
SELECT *
FROM `UsersList`

{$start}
ORDER BY `id` DESC
LIMIT 10
"
);


этот скрипт можно куда лучше еще сделать. Я лишь дал направление.

Спустя 16 минут, 56 секунд (16.12.2010 - 16:25) inpost написал(а):
welbox2
Я разницы не увидел =) Просто показал, что WHERE в таком случае не стоит писать =)

Спустя 25 минут, 54 секунды (16.12.2010 - 16:51) quickxyan написал(а):
тю а так не проще?


$Query = mysql_query("SELECT * FROM `UsersList`
WHERE `Login` = '"
.$Login."' AND `Name` like '%$name%'");


_____________
http://flibro.com/
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.