Jump to content

Поиск заказа по телефону и имени в админке


Recommended Posts

Нынешний поиск умеет искать только по одной выбранной таблице: name, phone и тд.
Запрос, отвечающий за поиск выглядит так:
api/Orders.tpl

$keyword_filter .= $this->db->placehold('AND o.name LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" ');



Вопрос: как изменить структуру запроса, для поиска одновременно по нескольким таблицам, например 'name' и 'phone' ?

UPD:
Cпасибо delprofile !
Заработал поиск и по телефону и по имени с такой конструкцией

$keyword_filter .= $this->db->placehold('AND o.phone LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" ');$keyword_filter .= $this->db->placehold('AND o.phone OR o.name LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" ');
Link to post
Share on other sites

Спасибо за ответ, но не отрабатывает.
Полный листинг стандартного запроса:

if(!empty($filter['keyword']))		{			$keywords = explode(' ', $filter['keyword']);			foreach($keywords as $keyword)				$keyword_filter .= $this->db->placehold('AND o.name LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" ');						}
Link to post
Share on other sites

delprofile Спасибо! Запрос отрабатывает, но не выводит результат.

При такой конструкции:

$keyword_filter .= $this->db->placehold('AND o.phone OR o.name LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" ');


при поиске по имени выводит количество найденных заказов, но сами заказы не показывает, а выводит просто все заказы. Если искать по телефону, пишет заказы не найдены.

При такой конструкции:

$keyword_filter .= $this->db->placehold('AND o.name OR o.phone LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" ');

При поиске по телефону пишет что заказы не найдены, но все таки выводит найденные правильно заказы (парадокс). Если искать по имени, то пишет кол-во найденных заказов, но заказов не выводит.
Link to post
Share on other sites

Прошу прощения за свои кривые руки. Ещё раз спасибо delprofile
Заработал поиск и по телефону и по имени с такой конструкцией

$keyword_filter .= $this->db->placehold('AND o.phone LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" ');$keyword_filter .= $this->db->placehold('AND o.phone OR o.name LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" ');
Link to post
Share on other sites

Для того, что бы убрать лишние символы из телефона, еще на стадии заказа, добавляем в view/CartView

после$order->phone       = $this->request->post('phone');добавим$order->phone = preg_replace('/[^\d,]+/', '', $order->phone);
Link to post
Share on other sites
  • 1 year later...
  • 3 years later...

Подскажите, а как добавить возможность поиска еще и по email, а то при поиске , убираеться с названия почты символ "@" и не хочет работать.

$keyword_filter .= $this->db->placehold('AND o.id OR o.email LIKE "%'.$this->db->escape(trim($keyword)).'%" '); - так не работает.

Link to post
Share on other sites

Почему зря? Можете привести хоть один недостаток, который возникнет из-за этого решения?

Для тебя не буду ничего писать, возможно ты и сам в состоянии и хватает скиллов понять почему так делать не стоит.
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...