Recommended Posts

Здравствуйте! Подскажите пожалуйста как сделать поиск по номеру телефона (тип формы - mobileform) для зарегистрированных пользователей?  

И, если не сложно, как сделать поиск по слову/фразе из объявления?

Поделиться сообщением


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

Здравствуйте! Подскажите пожалуйста как сделать поиск по номеру телефона (тип формы - mobileform) для зарегистрированных пользователей?  

И, если не сложно, как сделать поиск по слову/фразе из объявления?

Чуть поподробнее можно, что именно будете искать и в какой части сайта?

Поделиться сообщением


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

Чуть поподробнее можно, что именно будете искать и в какой части сайта?

Можно, конечно. Для удобства сотрудников, они же зарегистрированные пользователи (не знаю в чем именно заключается удобство) было создано несколько форм (доступные только зарегистрированным) в таблице Data: Ф.И.О. хозяина (fio_hos_all, тип - safestring); Тел. хозяина (tel_hos_all, тип - mobilephone); заметки (zametky, тип - safestring). Далее возникла надобность поиска по номеру телефона (так как бывают хозяева которые продают несколько квартир, и сотрудники хотят знать, работали они уже с ним или нет). Полистал форум, но нигде ничего не нашел (может плохо смотрел?). Единственное что нашел похожее (на мой взгляд) это поиск по ID (но ID движок обрабатывает, а поиск по номеру телефона, естественно нет). Отсюда вопрос: что надо вписать в template_search.php чтобы работал поиск по номеру телефона?  

Поделиться сообщением


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

Здравствуйте! Подскажите пожалуйста как сделать поиск по номеру телефона (тип формы - mobileform) для зарегистрированных пользователей?  

И, если не сложно, как сделать поиск по слову/фразе из объявления?

Есть платное приложение - Живой поиск, о нем как-то подзабыли, но это отдельная строка поиска, которая на текущий момент дает выборку по параметрам {id},{topic},{city},{street},{price},{text} (описание), может быть его и под ваши нужды можно доработать. Оно вроде на сайте etown.ru работает, можно посмотреть...

Поделиться сообщением


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

Отсюда вопрос: что надо вписать в template_search.php чтобы работал поиск по номеру телефона?  

 

Скорее всего это будут конструкции вида

(re_data.some_phone_field LIKE \'%'.$phone.'%\')

или

(re_data.some_phone_field=\''.$phone.'\')

Но тут все зависит очень сильно от того, что будет подаваться на вход поиска и как хранятся телефоны в том месте, где планируется искать. Если в полях телефоны хранятся в форматированном виде, то сам запрос поиска начнет приобретать монуструозный вид. А если кроме телефона в поле может быть еще, что-то, как например в поле "заметки (zametky, тип - safestring)" где, как я подозреваю, вполне могут содержаться и некие другие слова-данные, то решение по поиску может быть вообще пирровой победой.

Какого-то универсального варианта решение скорее всего нет, поскольку поиск по тексту сам по себе является очень интересной задачей даже без учета необходимости оптимизации. А если еще хочется, что бы кроме поиска движек мог выполнять параллельно еще хоть что-то, то каждый случай лучше рассматривать индивидуально. Вплоть до вынесения операций вычленения номеров из содержащих полей в некие индексные поля или таблицы отдельной задачей, а сам поиск организовывать уже по препарированным данным.

Поделиться сообщением


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

Скорее всего это будут конструкции вида

(re_data.some_phone_field LIKE \'%'.$phone.'%\')

или

(re_data.some_phone_field=\''.$phone.'\')

А можно более полный пример? Как оно в template_search.php будет? Не хотелось бы накосячить. Очень слабо РНР понимаю (стараюсь исправляться).

Поделиться сообщением


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

Здравствуйте! Подскажите пожалуйста как сделать поиск по номеру телефона (тип формы - mobileform) для зарегистрированных пользователей?  

И, если не сложно, как сделать поиск по слову/фразе из объявления?

Вы хотите сделать отдельное поле для этого? типа: 7e75a10e3a319152572494bd04dee4fe.png

Поделиться сообщением


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

Вы хотите сделать отдельное поле для этого? типа: 7e75a10e3a319152572494bd04dee4fe.png

Да. Уже любой вариант устроит. 

Поделиться сообщением


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

Этот блок добавьте там где нужно вывести поиск

<div id="block-search">    <form method="GET" action="../search.php">	<span></span>	<input type="text" id="input-search" name="q" placeholder="Поиск среди объявлений">	<input type="submit" id="button-search" value="Поиск">    </form>    <div id="result-search"></div></div>
дальше в template_search.tpl

$phone = trim($this->getRequestValue('phone'));if(''!==$phone){   $params['phone'] = $phone;  }	if(isset($params['phone'])){			$where_array[]='('.DB_PREFIX.'_data.phone LIKE "%'.$params['phone'].'%")';		}
еще создать файлик search.php и закинуть в корень с таким кодом:

<?php	$booble = strtolower(trim($_GET['q']));	header('Location: http://название-сайта.ру/?phone='.$booble);?>
только вот искать оно будет в точности как указано в БД. Поэтому если у вас номера вводятся по маске то в поиск тоже нужно ввод по маске сделать

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
<form method="GET" action="../search.php">

можно просто {$estate_folder}/ вместо ../search.php

И так, и так обращение идет на сам сайт. Так что промежуточный файл-редирект не нужен.

 

И в 

<input type="text" id="input-search" name="q" placeholder="Поиск среди объявлений">

name сменить с q на phone

Поделиться сообщением


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

Можно, конечно. Для удобства сотрудников, они же зарегистрированные пользователи (не знаю в чем именно заключается удобство) было создано несколько форм (доступные только зарегистрированным) в таблице Data: Ф.И.О. хозяина (fio_hos_all, тип - safestring); Тел. хозяина (tel_hos_all, тип - mobilephone); заметки (zametky, тип - safestring). Далее возникла надобность поиска по номеру телефона (так как бывают хозяева которые продают несколько квартир, и сотрудники хотят знать, работали они уже с ним или нет). Полистал форум, но нигде ничего не нашел (может плохо смотрел?). Единственное что нашел похожее (на мой взгляд) это поиск по ID (но ID движок обрабатывает, а поиск по номеру телефона, естественно нет). Отсюда вопрос: что надо вписать в template_search.php чтобы работал поиск по номеру телефона?  

Кстати, можно добавлять больше полей для поиска, через OR condition в template_search.tpl.

Поделиться сообщением


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

Кстати, можно добавлять больше полей для поиска, через OR condition в template_search.tpl.

 

Только следует помнить, что все переданные из template_search группы объединенные OR слепятся с остальными группами тем же AND. Наглядный пример: (region_id=2) AND (city_id=2 OR city_id=3 OR city_id=4), где первое условие напрочь убивает второе.

Поделиться сообщением


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

А возможно ли сделать на сайт, в фильтр поиск по номеру телефона на сайте как в админке, что бы искал даже по двум совпадающим цифрам номера телефона?

Если в админке этот код

<tr><td>Телефон</td><td> <input type="text" name="srch_phone" value="" /></td></tr>

 

(Я вставлял его в фильтр сайта, не работает:))

ле.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
12 часа назад, 72realty сказал:

А возможно ли сделать на сайт, в фильтр поиск по номеру телефона на сайте как в админке, что бы искал даже по двум совпадающим цифрам номера телефона?

вставьте это может сработает

 <div class="type control-group">
                <label class="control-label" for="inputType">
                    Поиск по телефону
                </label>
            <div class="controls"> <action="{$estate_folder}">	<input type="text" id="input-search" name="phone" placeholder="Поиск по телефону">  
                             
               </div>
            </div>  

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, nagovizin сказал:

вставьте это может сработает


 <div class="type control-group">
                <label class="control-label" for="inputType">
                    Поиск по телефону
                </label>
            <div class="controls"> <action="{$estate_folder}">	<input type="text" id="input-search" name="phone" placeholder="Поиск по телефону">  
                             
               </div>
            </div>  

 

Увы на real-spaces не работает

Но всё равно спасибо :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
20 минут назад, 72realty сказал:

Увы на real-spaces не работает

Но всё равно спасибо :)

если телефоны заносятся в базу через маску mobilephone, то они хранятся в базе только в формате цифр, типа 79261234567, что в приницпе не отличается от хранения того-же ID объявления. Попробуйте сделать поле поиска по телефону по аналогии с полем поиска по ID. По сути скопировать код для ID и заменить в нем парамтер выборки id на phone, может прокатит...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Chernetskiy сказал:

если телефоны заносятся в базу через маску mobilephone, то они хранятся в базе только в формате цифр, типа 79261234567, что в приницпе не отличается от хранения того-же ID объявления. Попробуйте сделать поле поиска по телефону по аналогии с полем поиска по ID. По сути скопировать код для ID и заменить в нем парамтер выборки id на phone, может прокатит...

Не вышло. Спасибо. Да и если бы получилось, то искало бы по всем цифрам(как и ID). А надо как в админке(даже по двум совпадающим цифрам)

Ну ничего. Обращусь потом во фриланс или попрошу Дмитрия

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 19.02.2018 в 13:36, nagovizin сказал:

положите прикрепленный файл в папку main своего шаблона уберите лишнее про optype и будет работать.

template_search.php

Спасибо большое. Помогло! Получилось!

Правда ищет только по номеру телефона data-phone(Телефон контактного лица ответственного за объект)

Если знаете, подскажите пожалуйста, что сделать, что бы искал ещё и по номеру телефона из профиля?

*Могу в знак благодарности рассказать вам как у меня устроен поиск по слову(ищет по любому слову на сайте). Использую его вместо поиска по улице(очень удобно!) :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 19.02.2018 в 13:36, nagovizin сказал:

положите прикрепленный файл в папку main своего шаблона уберите лишнее про optype и будет работать.

template_search.php

Это Вам

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 19.02.2018 в 13:36, nagovizin сказал:

положите прикрепленный файл в папку main своего шаблона уберите лишнее про optype и будет работать.

template_search.php

Кстати может быть подскажите как сделать в поиске выбор сотрудника?

А то приходиться в standart_search_form.tpl каждого сотрудника в ручную вписывать и удалять))

У меня сейчас в фильтре вот такой код стоит

<div class="col-md-4">
                                          <label>Сотрудник</label>
                    <select name="user_id"><option value="">Не важно</option><option value="153">Бадьянова Виктория Валерьевна</option><option value="156">Горячкина Светлана Александровна</option><option value="7">Гранкина Ирина Николаевна</option><option value="61">Даниленко Елена Александровна</option><option value="64">Иванова Ирина Ивановна</option><option value="168">Князева Валентина Евгеньевна</option><option value="21">Копасова Екатерина Анатольевна</option><option value="154">Лебедева Елена Михайловна</option><option value="55">Митрофанова Александра Алексеевна</option><option value="36">Старцева Юлия Михайловна</option><option value="20">Стейскал Наталья Витальевна</option><option value="1">Харламов Алексей Юрьевич</option><option value="150">Шатилова Ирина Николаевна</option></select>
                

                                    </div>

У меня есть выбор по отделу (Дмитрий делал)

В standart_search_form.tpl    такой код

<div class="col-md-4">
                                          <label>Отдел</label>
                    {$users_groups_list}
                                   {if $country_list ne ''}
                                   {$country_list}
                                   {/if}
                                    </div>

А как сделать так же в выбор сотрудников не знаю:))))

Поделиться сообщением


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

спасибо я посмотрю че там за поиск по слову. че то шаманил ранее сам но так и не смог реализовать, по другим вопросам я не сталкивался не знаю как это делать. 

Поделиться сообщением


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

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

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

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

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

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

Войти

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

Войти сейчас