Код: Выделить всё
$emails = FALSE;
$names = FALSE;
foreach ($search_array as $value) {
if (valid_email($value)) {
$emails[] = $value;
} else {
$names[] = $value;
}
}
if ($emails) {
$this->db->where_in('email', $emails);
if ($names) {
$this->db->or_where_in('username', $names);
$this->db->or_where_in('firstname', $names);
$this->db->or_where_in('lastname', $names);
}
} else {
if ($names) {
$this->db->where_in('username', $names);
$this->db->or_where_in('firstname', $names);
$this->db->or_where_in('lastname', $names);
}
}
$this->db->select('id, username, firstname, lastname');
$query = $this->db->get('users');
if ($query->num_rows() > 0) {
return $query->result();
}
return FALSE;
Возможно, я мог бы очистить операторы if и то, как работает электронная почта, но это не главное. Этот код работает отлично (по крайней мере, с очень маленькой базой данных
- Прямо сейчас вам нужно ввести правильное имя или адрес электронной почты, чтобы получить хороший результат. Если вы почти правы, было бы неплохо получить несколько предложений, но я, вероятно, смогу разобраться в этом сам, поставив лайк.
- Я хочу отсортировать весь массив результатов, и вот здесь я спотыкаюсь. Поскольку и адрес электронной почты, и имя пользователя уникальны, я хочу, чтобы поиск отображался с использованием следующих приоритетов:
- Электронная почта
- Имя пользователя
- Имя + Фамилия
- Имя
- Фамилия
Я нашел эту тему Поисковый запрос, приоритет «упорядочить по», но поскольку я не знаю, что именно в моем поиске, это мне не помогло, но, возможно, я мог бы что-нибудь использовать похоже?
Ребята, вы вообще знаете, как решить приоритетную задачу? Возможно, я пропустил некоторые важные функции, которые могли бы помочь? А что произойдет, когда моя база данных станет большой?
Подробнее здесь: https://stackoverflow.com/questions/676 ... ry-builder
Мобильная версия