Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Номер телефона клиента в админке


 Поделиться

Рекомендованные сообщения

Подскажите, кто понимает.
Стоит модуль simple для оформления заказов, в нем прописана маска +38(099)999-99-99.
В таком же виде, телефон и попадает в БД. Подскажите пожалуйста, как можно сделать, чтобы телефон записывался в формате +380999999999 не убирая маску для клиентов?

Ссылка на комментарий
Поделиться на других сайтах


Да надстроить в контроллере перед записью в бд

Ссылка на комментарий
Поделиться на других сайтах

До речі з маскою +38 (099) 999-99-99. роблять помилки частіше ніж з +380999999999

Ссылка на комментарий
Поделиться на других сайтах

24.09.2022 в 09:49, Seofisher сказал:

До речі з маскою +38 (099) 999-99-99. роблять помилки частіше ніж з +380999999999

В мене навпаки. В попередньому варіанті була маска саме +380999999999. 
Взагалі, проблема у пошуку замовлення за номером телефону. Частина записів у БД у форматі +380999999999, частина у +38 (099) 999-99-99.
Гадаю, що мабуть швидше поправити алгоритм пошуку, ніж як буде записаний номер телефону у БД.

Ссылка на комментарий
Поделиться на других сайтах


24.09.2022 в 12:09, Mistik сказал:

В мене навпаки. В попередньому варіанті була маска саме +380999999999. 
Взагалі, проблема у пошуку замовлення за номером телефону. Частина записів у БД у форматі +380999999999, частина у +38 (099) 999-99-99.
Гадаю, що мабуть швидше поправити алгоритм пошуку, ніж як буде записаний номер телефону у БД.

Який пошук по телефону? в мене стоїть доповнення пошук по телефону та email. То він шукае добре, йому все одно як номер вказаний, з дужками, дефісами..

Ссылка на комментарий
Поделиться на других сайтах

В 24.09.2022 в 12:31, Seofisher сказав:

Який пошук по телефону? в мене стоїть доповнення пошук по телефону та email. То він шукае добре, йому все одно як номер вказаний, з дужками, дефісами..

Якщо у Вас телефон збережений в базі в такому форматі 38099999999 то так не важливо як Ви вбиваєте в пошук номер, так як при пошуку зайві символи при запиті видаляє, а якщо номер збережений +38 (099) 999-99-99 то звісно не буде знаходити в базі номер при запиті.

 

В 24.09.2022 в 12:09, Mistik сказав:

Гадаю, що мабуть швидше поправити алгоритм пошуку, ніж як буде записаний номер телефону у БД.

Простіше при збереженні номера в базу видаляти всі зайві символи  із номера через str_replace 

Ссылка на комментарий
Поделиться на других сайтах


24.09.2022 в 13:04, Parallax сказал:

Якщо у Вас телефон збережений в базі в такому форматі +38099999999 то так не важливо як Ви вбиваєте в пошук номер, так як при пошуку зайві символи призапиті видаляє, а якщо номер збережений +38 (099) 999-99-99 то звісно не буде знаходити в базі номер призапиті.

по різному, з дужками і без збереженний в бд, але шукає номально

Ссылка на комментарий
Поделиться на других сайтах

В 24.09.2022 в 13:09, Seofisher сказав:

по різному, з дужками і без збереженний в бд, але шукає номально

Ну, значить у Вас просто краще реалізовано пошук телефона

Ссылка на комментарий
Поделиться на других сайтах


24.09.2022 в 13:04, Parallax сказал:

Простіше при збереженні номера в базу видаляти всі зайві символи  із номера через str_replace 

На жаль, я не розуміюся на таких правках. 
А блок пошуку, знайти вдалось, на багато простіше. 

 

public function getCustomers($data = array()) {
        $sql = "SELECT c.*, CONCAT(c.firstname, ' ', c.lastname) AS name, cgd.name AS customer_group FROM " . DB_PREFIX . "customer c LEFT JOIN " . DB_PREFIX . "customer_group_description cgd ON (c.customer_group_id = cgd.customer_group_id) ";

        if (!empty($data['filter_name'])) {
            $sql .= " LEFT JOIN ".DB_PREFIX."address adr ON (adr.customer_id = c.customer_id) ";
        }

        $sql .= " WHERE cgd.language_id = '" . (int)$this->config->get('config_language_id') . "'";

        $implode = array();

        if (!empty($data['filter_name'])) {

            $filer_name_sql = '';
            $filer_name_sql .=  " ( CONCAT(c.firstname, ' ', c.lastname) LIKE '%" . $this->db->escape($data['filter_name']) . "%' ";
            $filer_name_sql .= " OR c.firstname LIKE '%" . $this->db->escape($data['filter_email']) . "%' ";
            $filer_name_sql .= " OR c.lastname LIKE '%" . $this->db->escape($data['filter_email']) . "%' ";
            $filer_name_sql .= " OR c.telephone LIKE '%" . $this->db->escape($data['filter_email']) . "%' ";
            $filer_name_sql .= " OR adr.firstname LIKE '%" . $this->db->escape($data['filter_email']) . "%' ";
            $filer_name_sql .= " OR adr.lastname LIKE '%" . $this->db->escape($data['filter_email']) . "%' ";
            $filer_name_sql .= " OR adr.address_1 LIKE '%" . $this->db->escape($data['filter_email']) . "%' ";
            $filer_name_sql .= " OR adr.address_2 LIKE '%" . $this->db->escape($data['filter_email']) . "%' ";
            $filer_name_sql .= " OR adr.city LIKE '%" . $this->db->escape($data['filter_email']) . "%' ";
            $filer_name_sql .= " OR adr.postcode LIKE '%" . $this->db->escape($data['filter_email']) . "%' ";
            $filer_name_sql .= " ) ";

Якщо можете, підкажіть будь ласка, як змінити параметр пошуку, щоб по c.telephone, щукало без урахування символів "(", ")", "-".

Ссылка на комментарий
Поделиться на других сайтах


В 26.09.2022 в 14:03, Mistik сказав:

Якщо можете, підкажіть будь ласка

Можете якось так прописати пошук

 $filer_name_sql .= " REPLACE(REPLACE(REPLACE(REPLACE(c.telephone,'-',''), '(',''),')',''),' ','') LIKE '%" . $this->db->escape(preg_replace("/[^,.0-9]/", '',$data['filter_telephone'])) . "%'";

PS: даний код не перевірявся

Ссылка на комментарий
Поделиться на других сайтах


26.09.2022 в 16:42, Parallax сказал:

Можете якось так прописати пошук

 $filer_name_sql .= " REPLACE(REPLACE(REPLACE(REPLACE(c.telephone,'-',''), '(',''),')',''),' ','') LIKE '%" . $this->db->escape(preg_replace("/[^,.0-9]/", '',$data['filter_telephone'])) . "%'";

PS: даний код не перевірявся

на жаль, не працює
шукаю далі, але все одно, дякую

Ссылка на комментарий
Поделиться на других сайтах


		$for_phone = implode('',str_split(preg_replace("/[^0-9]/", '', $phone)));
if ($for_phone) {		
		$sql ="SELECT COUNT(*) as total FROM " . DB_PREFIX . "order WHERE 
		REPLACE(
			REPLACE(
				REPLACE(
					REPLACE(telephone,')',''),
					'(',''),
				'-',''),
			' ','')
		LIKE '%" . $this->db->escape($for_phone) . "%' 

 

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...
В 23.09.2022 в 17:46, Mistik сказав:

Подскажите, кто понимает.
Стоит модуль simple для оформления заказов, в нем прописана маска +38(099)999-99-99.
В таком же виде, телефон и попадает в БД. Подскажите пожалуйста, как можно сделать, чтобы телефон записывался в формате +380999999999 не убирая маску для клиентов?

 

В 24.09.2022 в 09:49, Seofisher сказав:

До речі з маскою +38 (099) 999-99-99. роблять помилки частіше ніж з +380999999999


А еще лучше сделать +38(999)999-99-99
По практике уже видел кучу прекрастных номеров +38(009)999-99-99
И потом ищи клиента)))

Ссылка на комментарий
Поделиться на других сайтах

14.10.2022 в 20:33, Ecolotos сказал:

 


А еще лучше сделать +38(999)999-99-99
По практике уже видел кучу прекрастных номеров +38(009)999-99-99
И потом ищи клиента)))

на практиці, меньше всього помилок буде якщо зовсім маску забрати

Ссылка на комментарий
Поделиться на других сайтах

В 17.10.2022 в 14:38, Seofisher сказав:

на практиці, меньше всього помилок буде якщо зовсім маску забрати

В моему случае маска +38(999)999-99-99 работает четко)

Ссылка на комментарий
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.