Я делаю поиск пользователей на сайте! Поиск осуществляется по таким категориям как логин, имя, фомилия, и т.д. Но суть в том что можно делать поиск по одной категории или по нескольким(например только по логину)
Нужно дать запрос чтобы искало записи где логин равен логину, а имя может принимать любое значение!
Например:
$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 запрос.
Продвинутому: Макроподстановка
Новичку: Динамически составляемый 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 много раз!
ну как всегда все гениально - просто)))
а ведь пользовался функцией 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) Семён написал(а):
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 в таком случае не стоит писать =)
Я разницы не увидел =) Просто показал, что 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/