[Решено] Поиск по юзерам

Статус
В этой теме нельзя размещать новые ответы.

Sudba

Гуру форума
Регистрация
6 Дек 2007
Сообщения
930
Реакции
50
Здравствуйте. Есть юзеры, которые заполняют три строки:
Name1 - Саша
Lastname - Мишин
Company - ООО Ромашка
Есть код, который делает поиск по юзерам
PHP:
if($f == 'search' && mb_strlen($y) > 1)
{
    $sq = $y;
    $title[] = $L['Search']." '".htmlspecialchars($y)."'";
    $where['namelike'] = "user_name1 LIKE '%".$db->prep($y)."%'"; 
}

Как мы видим он ищет только по столбцу name1, то есть если вбить Саша, то результат выходит, но если вбить:
Саша Мишин
Мишин
ООО Ромашка
Саша ООО Ромашка
Саша Мишин ООО Ромашка

То результата нет. Как правильно прописать условие, чтобы код работал?
Пытался вставить or/and ничего не выходит(
 
Последнее редактирование модератором:
Сделал вот такой запрос, он ищет по имени-фамилии-компании. Но одновременно по имени и фамилии не находит:
Код:
$where['namelike'] = "(user_name1 like '%".$db->prep($y)."%'  AND user_Lastname like '%".$db->prep($y)."%' ) or (user_name1 LIKE'%".$db->prep($y)."%') or (user_Lastname LIKE'%".$db->prep($y)."%') or (user_Company LIKE'%".$db->prep($y)."%') or (user_name LIKE'%".$db->prep($y)."%')";
 
Нужно разбить входные данные для поиска на составляющие explode(" ", $y) и каждое слово из полученного массива искать в нужных полях
 
Нужно разбить входные данные для поиска на составляющие explode(" ", $y) и каждое слово из полученного массива искать в нужных полях
не подскажите, как правильно прописать в моем случае?
<-------------- добавлено через 1119 сек. -------------->
Самый простой вариант для поиска вхождений в каждом из полей по слову

Код:
$y = "Саша Мишин ООО Ромашка";

$search_words = explode(" ", $y);

$_where = array();

foreach($search_words as $word)
{
    $_where[] = "user_name1 LIKE '%".$word."%'";
    $_where[] = "user_Lastname LIKE '%".$word."%'";
    $_where[] = "user_Company  LIKE '%".$word."%'";
}

$where['namelike'] = implode(" OR ", $_where);
вставил, проверил. Ищет по отдельности Имя и фамилию, а если ввести Имя и Фамилию, то поиск только по имени.
Другими словами:
Саша - работает
Мишин - работает
Саша Мишин - показывает все у кого имя Саша
 
не подскажите, как правильно прописать в моем случае?

Самый простой вариант для поиска вхождений в каждом из полей по слову

Код:
$y = "Саша Мишин ООО Ромашка";

$search_words = explode(" ", $y);

$_where = array();

foreach($search_words as $word)
{
    $_where[] = "user_name1 LIKE '%".$word."%'"; 
    $_where[] = "user_Lastname LIKE '%".$word."%'"; 
    $_where[] = "user_Company  LIKE '%".$word."%'"; 
}

$where['namelike'] = implode(" OR ", $_where);
<-------------- добавлено через 1442 сек. -------------->
расставьте AND где надо и будет работать
 
Самый простой вариант для поиска вхождений в каждом из полей по слову

Код:
$y = "Саша Мишин ООО Ромашка";

$search_words = explode(" ", $y);

$_where = array();

foreach($search_words as $word)
{
    $_where[] = "user_name1 LIKE '%".$word."%'";
    $_where[] = "user_Lastname LIKE '%".$word."%'";
    $_where[] = "user_Company  LIKE '%".$word."%'";
}

$where['namelike'] = implode(" OR ", $_where);
<-------------- добавлено через 1442 сек. -------------->
расставьте AND где надо и будет работать

сделал вот так:
Код:
foreach($search_words as $y)
{
    $_where[] = "user_name1 AND user_Lastname LIKE '%".$y."%'";
    $_where[] = "user_name1 LIKE '%".$y."%'";
    $_where[] = "user_Lastname LIKE '%".$y."%'";
    $_where[] = "user_Company  LIKE '%".$y."%'"; 
}
ищет по имени все равно
 
Код:
$y = "Саша Мишин ООО Ромашка";

$search_words = explode(" ", $y);

$_where = array();

foreach($search_words as $word)
{
    $_where[] = "(user_name1 LIKE '%".$word."%'" . " OR user_Lastname LIKE '%".$word."%'" . " OR user_Company  LIKE '%".$word."%')";
}

$where['namelike'] = implode(" AND ", $_where);
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху