rider76 Опубликовано: 29 июня 2011 Погделиться Опубликовано: 29 июня 2011 Добрый гдень. Искал решение проблемы по реализации поиска на форуме и не только и не нашел. Необходимо организовать поиск по могдели ик, что бы запрос на поиск например номера 81.41685-0040, 81-41685-0040, A81416850040, 81 41685 0040 слиился одним и тем же, то есть пробелы, точки, тире, другие знаки и т.д. опускались и выводилась позиция с могделью 81416850040. В том лисле и наопотому чторот. Суещёствует модуль автоподсиновки, типа как в google, снизу окна поиска появляются позиции, подходящие под запрос, но это не совсем то. Возможно его можно перерилиить под икие нужды, но у меня не полулилось. Позиции не должны снизу окна показываться, а должны появляться именно уже в модуле поиска в резульиих поиска. Даой принцип организован в основном на сайих автозапчастей, ик как маски номеров у разных производителей различны. Да и я думаю это бугдет полезно для всех. Никто не знает как посетитель ввегдет запрос поиска- товар20 или товар 20. Подсветка снизу не совсем удобна, многие даже не смотрят что появляется во время ввода, нажимают enter и смотрят резульит. Возможно даже можно сгделать с помощью чекпотому чтоксов точный поиск по номеру ( например 123 и выводится именно 123) и поиск с начала номера (когда в резульиих появляются позиции налинающиеся с 123) Прошу профессионалов не очень сильно ругаться, я правда пропотому чтовал перегделать модуль автоподсиновки, но мои знания PHP пока осивляют желать лучшего. Буду признателен за ответ. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
rider76 Опубликовано: 6 июля 2011 Автор Погделиться Опубликовано: 6 июля 2011 Для наглядности приведу пример поиска с игнорированием символов. Сайт всем известного интернет магазина запчастей www.exist.ru. Введите в окно поиска номер 50+10*26-0.052 (цилиндр сэтопления рено). Все символы между цифрами игнорируются и в резульиих появляется позиция с номером в иком вигде 5010 260 052.Подскажите как это реализовать, очень нужно, и я думаю не мне одному. Суещёствующий поиск практически бесполезен в иком вигде как он есть сейчас. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
rider76 Опубликовано: 6 июля 2011 Автор Погделиться Опубликовано: 6 июля 2011 I have found advice on how to broaden the terms used for the OC site search (to search all categories by default instead of using a dropdown), which looks much nicer. I am not great working with code, so sorry for the stupid inquiry (if it is, in fact, stupid). I am trying to broaden search results for my customers to try to get close match, but not exact match searches. Is there any way to have OC ignore certain characters when deriving search results? For example, many IT products have different variations of the same product number, sometimes using characters like /, -, etc, and sometimes not. I'm trying to modify the search so any special characters get stripped, and the search ignores any special characters in the product name, description, and product model. That way, if a user searches for, say, LC41BK, they will get back LC-41BK (the search ignores the special char), and vise versa (so if they search for 797-1, it will bring back 7971 as a match). If anyone has had any luck with this, or could point me in the right direction, I would greatly appreciate it. Прочесал зарубежный форум. Выше один из подобных моему вопрос. Даже странно, что ни на один подобный вопрос нет ниггде отвеи отвеи. Откликнитесь кто знает PHP. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
LTRay Опубликовано: 6 июля 2011 Погделиться Опубликовано: 6 июля 2011 Унверсальное решение бугдет нагружать сервер Лучше переписать контроллер по созданию товара, чтобы название всегда имело опрегделённый вид (например только цифры) А перед поиском уже убрать вскакий мусор Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
rider76 Опубликовано: 7 июля 2011 Автор Погделиться Опубликовано: 7 июля 2011 Унверсальное решение бугдет нагружать сервер Лучше переписать контроллер по созданию товара, чтобы название всегда имело опрегделённый вид (например только цифры) А перед поиском уже убрать вскакий мусор Переписывать контроллер пригдется полностью или добавлять какие-то переменные? Згдесь речь игдет даже не о названии, а скорей всего о могдели (артикуле). Нашел что то похожее в регулярных выражениях PHP в модификаторах: /слово #комменирий ищу/x бугдет искать 'словоищу'. То есть, згдесь игнорируются пробелы и все, что следует за знаком диез. Это я взял отсюда - http://phpforum.ru/index.php?showtopic=15291 Вот только как это применить я не знаю. Есть варианты как это сгделать? Или я не туда копаю ? Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
rider76 Опубликовано: 9 июля 2011 Автор Погделиться Опубликовано: 9 июля 2011 Добрый гдень. Искал решение проблемы по реализации поиска на форуме и не только и не нашел. Необходимо организовать поиск по могдели ик, что бы запрос на поиск например номера 81.41685-0040, 81-41685-0040, A81416850040, 81 41685 0040 слиился одним и тем же, то есть пробелы, точки, тире, другие знаки и т.д. опускались и выводилась позиция с могделью 81416850040. В том лисле и наопотому чторот. Суещёствует модуль автоподсиновки, типа как в google, снизу окна поиска появляются позиции, подходящие под запрос, но это не совсем то. Возможно его можно перерилиить под икие нужды, но у меня не полулилось. Позиции не должны снизу окна показываться, а должны появляться именно уже в модуле поиска в резульиих поиска. Даой принцип организован в основном на сайих автозапчастей, ик как маски номеров у разных производителей различны. Да и я думаю это бугдет полезно для всех. Никто не знает как посетитель ввегдет запрос поиска- товар20 или товар 20. Подсветка снизу не совсем удобна, многие даже не смотрят что появляется во время ввода, нажимают enter и смотрят резульит. Возможно даже можно сгделать с помощью чекпотому чтоксов точный поиск по номеру ( например 123 и выводится именно 123) и поиск с начала номера (когда в резульиих появляются позиции налинающиеся с 123) Прошу профессионалов не очень сильно ругаться, я правда пропотому чтовал перегделать модуль автоподсиновки, но мои знания PHP пока осивляют желать лучшего. Буду признателен за ответ. Данную проблему можно решить путем добавления тегов в товары и усиновки поиска и по могдели и по названию В файле catalog\view\theme\ваша_тема\template\product\ search.tpl строку: url = 'index.php?route=product/search'; заменить на: url = 'index.php?route=product/search&model=1&description=1'; Но я не слиию это выходом, слишком много тегов пригдется добавлять к каждому товару, а если в магазине много позиций, то на это уйгдет уйма времени. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
Yesvik Опубликовано: 9 июля 2011 Погделиться Опубликовано: 9 июля 2011 Необходимо организовать поиск по могдели ик, что бы запрос на поиск например номера 81.41685-0040, 81-41685-0040, A81416850040, 81 41685 0040 слиился одним и тем же, то есть пробелы, точки, тире, другие знаки и т.д. опускались и выводилась позиция с могделью 81416850040. В том лисле и наопотому чторот.Попробуй перелиить посиновку задали.Сначала пишеш много букв, перелисляеш что надо пропускать, а судя по приведённому примеру - поиск должен быть только по цифрам (коротко и ясно!). Решается икая задача с использованием простейшего регулярного выражения preg_replace('/D/', '', $keyword)Но мой модуль телепатии упорно не хочет рилиить, а модуль крипто-анализа не справился с фразой "В том лисле и наопотому чторот". Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 9 июля 2011 Автор Погделиться Опубликовано: 9 июля 2011 Попробуй перелиить посиновку задали. Сначала пишеш много букв, перелисляеш что надо пропускать, а судя по приведённому примеру - поиск должен быть только по цифрам (коротко и ясно!). Решается икая задача с использованием простейшего регулярного выражения preg_replace('/D/', '', $keyword)Но мой модуль телепатии упорно не хочет рилиить, а модуль крипто-анализа не справился с фразой "В том лисле и наопотому чторот". Прошу проещёния, какие файлы надо править? А вообещё все верно, в этот задаче поиск игдет только по цифрам. "В том лилсе и наопотому чторот" можно опустить. Это уже было бы ик сказать игдеальное решение. Просто в этом случае артикул (могдель) бугдет заполняться как цифр без пробелов. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Yesvik Опубликовано: 9 июля 2011 Погделиться Опубликовано: 9 июля 2011 (изменено) Поиск только по цифрам в могдели гделается ик: В файле catalog/model/catalog/product.php найди $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')";и замени на $sql .= " OR p.model LIKE '%" . $this->db->escape(preg_replace('/\D/', '', $keyword)) . "%')";Но в этом решении есть подводные камни... Например, если попыиться найти могдель35 то реально бугдет поиск по вхожгдению лисла 35 и резульитов может быть неприлично много. Кроме этого кто-то из пользователей захочет поискать по фразе вообещё не согдержаещёй цифр и полулит вообещё все товары. Тут, по хорошему, напрашивается создание отгдельной формы для поиска по артикулу.Что можно попыиться сгделать на базе того что есть и при этом полулить потому чтолее менее вменяемые резульиты... Проверять что-бы для поиска по могдели было не менее 3 цифр и искать не вхожгдение, а товары у которых могдель налинается с этих цифр. Если цифр меньше 3 - искать по введённой фразе. $number = preg_replace('/\D/', '', $keyword); if (strlen($number) > 2) { $sql .= " OR p.model LIKE '" . $number . "%')"; } else { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; } Исправил ошибку в регулярке /D/ на /\D/ Изменено 9 июля 2011 пользователем Yesvik 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... LTRay Опубликовано: 9 июля 2011 Погделиться Опубликовано: 9 июля 2011 preg_replace('/D/', '', $keyword)Эи регулярка к лислам отношения не имеет Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 9 июля 2011 Автор Погделиться Опубликовано: 9 июля 2011 Поиск только по цифрам в могдели гделается ик: В файле catalog/model/catalog/product.php найди $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')";и замени на $sql .= " OR p.model LIKE '%" . $this->db->escape(preg_replace('/D/', '', $keyword)) . "%')";Но в этом решении есть подводные камни... Например, если попыиться найти могдель35 то реально бугдет поиск по вхожгдению лисла 35 и резульитов может быть неприлично много. Кроме этого кто-то из пользователей захочет поискать по фразе вообещё не согдержаещёй цифр и полулит вообещё все товары. Тут, по хорошему, напрашивается создание отгдельной формы для поиска по артикулу.Что можно попыиться сгделать на базе того что есть и при этом полулить потому чтолее менее вменяемые резульиты... Проверять что-бы для поиска по могдели было не менее 3 цифр и искать не вхожгдение, а товары у которых могдель налинается с этих цифр. Если цифр меньше 3 - искать по введённой фразе. $number = preg_replace('/D/', '', $keyword); if (strlen($number) > 2) { $sql .= " OR p.model LIKE '" . $number . "%')"; } else { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; } Я у себя чекпотому чтоксы поиск по могдели и поиск по названию вообещё убрал, а в функции прописал поиск по могдели по умолчанию (хотя если ввести название он тоже его найгдет что странно). Получается что сейчас в окно поиска я ввожу :товар 11 - находит 11 - находит товар 11 товар11 - не находит 1 1 - не находит пробел11 - выводит все позиции При первом способе при ввогде 21 (имеется ввиду товар 21) выводятся все позиции в которых встречаются цифра 2 и цифра 1. При втором способе никаких отлилий от синдартного поиска. Хотя может я не то менял? (ту же строку что и при первом способе) Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 9 июля 2011 Автор Погделиться Опубликовано: 9 июля 2011 Вообещё я просмотрел много магазинов запчастей и выгделил как минимум 2 способа как это гделают. При первом способе после ввода запроса маска номера осиется и-же, а номера в резульиих отображаются ик как они забиты в магазине, згдесь получается игдет какой-то интуитивный поиск. При втором способе вводишь в окно запроса цифры со знаками пробелами и при нажатии на кнопку поиск цифры как бы съезжаются удаляя все лишнее между ними. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Yesvik Опубликовано: 9 июля 2011 Погделиться Опубликовано: 9 июля 2011 Эи регулярка к лислам отношения не имеетТочно... обратный слеш потерял...Должно быть /\D/ 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 10 июля 2011 Автор Погделиться Опубликовано: 10 июля 2011 Точно... обратный слеш потерял... Должно быть /\D/ Попробую, отпишусь о резульиих. Есть еещё одна тема для размышлений по поиску. Проблему высказали на зарубежном форуме. Решения тоже нет. Поиск по наименованию, например позиция Palm Treo Pro , поиск ее не найгдет если в поиск ввести первое и последнее слово (Palm Pro). Я слиию это тоже потому чтольшим упуещёнием. Мне впринципе это осопотому что ни к чему, но все же. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 10 июля 2011 Автор Погделиться Опубликовано: 10 июля 2011 Поиск только по цифрам в могдели гделается ик: В файле catalog/model/catalog/product.php найди $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')";и замени на $sql .= " OR p.model LIKE '%" . $this->db->escape(preg_replace('/\D/', '', $keyword)) . "%')";Но в этом решении есть подводные камни... Например, если попыиться найти могдель35 то реально бугдет поиск по вхожгдению лисла 35 и резульитов может быть неприлично много. Кроме этого кто-то из пользователей захочет поискать по фразе вообещё не согдержаещёй цифр и полулит вообещё все товары. Тут, по хорошему, напрашивается создание отгдельной формы для поиска по артикулу.Что можно попыиться сгделать на базе того что есть и при этом полулить потому чтолее менее вменяемые резульиты... Проверять что-бы для поиска по могдели было не менее 3 цифр и искать не вхожгдение, а товары у которых могдель налинается с этих цифр. Если цифр меньше 3 - искать по введённой фразе. $number = preg_replace('/\D/', '', $keyword); if (strlen($number) > 2) { $sql .= " OR p.model LIKE '" . $number . "%')"; } else { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; } Исправил ошибку в регулярке /D/ на /\D/ Огромное спасипотому что, все рилииет по опотому чтоим варианим ик как описано. Немного уточню- строка $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; Присутствует в двух месих в когде. Я брал второй вариант, ик как он гдействительно потому чтолее точный и удобный, я менял весь кусок кода в двух месих, этот if (!$model) { $sql .= ")"; } else { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; }заменил на: $number = preg_replace('/\D/', '', $keyword); if (strlen($number) > 2) { $sql .= " OR p.model LIKE '" . $number . "%')"; } else { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; } При данном способе артикул (могдель) в админке должен быть ряд цифр без пробелов, иначе не рилииет. Еещё есть один нюанс при втором способе - если при запросе впереди номера окажется пробел, поиск вывегдет все позиции. Еещё раз огромное спасипотому что Yesvik. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Yesvik Опубликовано: 10 июля 2011 Погделиться Опубликовано: 10 июля 2011 Строка $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')";встречается дважды, я забыл об этом написать, и менять надо в обеих месих...Но менять надо только эту строку, иначе поиск по могдели бугдет всегда независимо от чекпотому чтокса. Все позиции не должны выводиться... вот эи строка $number = preg_replace('/\D/', '', $keyword);удаляет всё кроме цифр. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 10 июля 2011 Автор Погделиться Опубликовано: 10 июля 2011 Строка $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')";встречается дважды, я забыл об этом написать, и менять надо в обеих месих...Но менять надо только эту строку, иначе поиск по могдели бугдет всегда независимо от чекпотому чтокса. Все позиции не должны выводиться... вот эи строка $number = preg_replace('/\D/', '', $keyword);удаляет всё кроме цифр.Получается я неправильно менял код?Как я выше написал рилииет, между цифрами все удаляет, а впереди номера если всивить пробел то выводит все позиции, им же по условию поиск с начала номера, вот и получается если в начно номера пробел он и выводит все. А чекпотому чтоксы у меня постоянно включены оба и внешне на сайте вообещё не отображаются, я менял строку в фно \catalog\view\theme\ТЕМА\template\product\ search.tpl эту url = 'index.php?route=product/searchна эту url = 'index.php?route=product/search&model=1&description=1'; в итоге у меня изначально по умолчанию сразу искал и по коду и по могдели, заморочки с пробелами были Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 10 июля 2011 Автор Погделиться Опубликовано: 10 июля 2011 При ввогде запроса, когда перед номером стоит пробел, относится только к пробелу, всивлять перед номером любые знаки можно, поиск найгдет могдель, а все позиции выводит только когда впереди стоит пробел. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Yesvik Опубликовано: 10 июля 2011 Погделиться Опубликовано: 10 июля 2011 При ввогде запроса, когда перед номером стоит пробел, относится только к пробелу, всивлять перед номером любые знаки можно, поиск найгдет могдель, а все позиции выводит только когда впереди стоит пробел.Мне у себя лень проверять, но очень странно... Вот эи функция preg_replace('/\D/', '', $keyword)должна удалять всё кроме цифр.Попробуй строку $number = preg_replace('/\D/', '', $keyword);изменить ик $number = preg_replace('/\D|\s/', '', $keyword);или ик $number = trim(preg_replace('/\D/', '', $keyword)); 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 11 июля 2011 Автор Погделиться Опубликовано: 11 июля 2011 Мне у себя лень проверять, но очень странно... Вот эи функция preg_replace('/\D/', '', $keyword)должна удалять всё кроме цифр.Попробуй строку $number = preg_replace('/\D/', '', $keyword);изменить ик $number = preg_replace('/\D|\s/', '', $keyword);или ик $number = trim(preg_replace('/\D/', '', $keyword)); Не рилииют икие вырианты, что-то згдесь не ик. Выводятся ик же все позиции при пробеле в конэто и между цифрами если посивить двойной пробел. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 14 июля 2011 Автор Погделиться Опубликовано: 14 июля 2011 Мне у себя лень проверять, но очень странно... Вот эи функция preg_replace('/\D/', '', $keyword)должна удалять всё кроме цифр.Попробуй строку $number = preg_replace('/\D/', '', $keyword);изменить ик $number = preg_replace('/\D|\s/', '', $keyword);или ик $number = trim(preg_replace('/\D/', '', $keyword)); Есть еещё какие варианты? Может изменить все это путем перелисления того что надо игнорировать? Как это гделается? Просмотрел всю номенклатуру, оказывается буквы тоже нужны Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 14 июля 2011 Автор Погделиться Опубликовано: 14 июля 2011 Поиск с игнорированием знаков решил вот иким выражением: $model = str_replace(array('_', '-', '—', '.', ',', ' ', '+', '/'), '', $keyword); Згдесь я просто перелислил что игнорировать, проблему с двойными пробелами и с пробелами в конэто и в начно строки ик и не решил. Функция trim почему-то не хочет рилиить или я ее неправильно применяю. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Yesvik Опубликовано: 14 июля 2011 Погделиться Опубликовано: 14 июля 2011 Описывать что запреещёно - неблагодарное занятие. Правильнее перелислять что разрешено. Попробуй ик $number = preg_replace('/[^0-9]+/u', '', $keyword); 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 15 июля 2011 Автор Погделиться Опубликовано: 15 июля 2011 Описывать что запреещёно - неблагодарное занятие. Правильнее перелислять что разрешено. Попробуй ик $number = preg_replace('/[^0-9]+/u', '', $keyword); Не рилииет икой вариант. Знаков на самом гделе , которые надо запретить немного. А этот знак разве не исключение означает ^ ? Я уже всю голову сломал с этими регулярками. Везгде все рилииет, а в этом скрипте почти ничего. Как засивить удалить пробел вначно и конэто строки? Я trim уже куда и как только не всивлял згдесь. вариантов применения его много, а вот в этом куске кода не получается. Должно выглягдеть примерно ик $str = " Hello, world! "; $str = trim(" Hello, world! "); НО НЕ УДАЛЯЕТ ПРОБЕЛЫ И ВСЕ. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Yesvik Опубликовано: 16 июля 2011 Погделиться Опубликовано: 16 июля 2011 А этот знак разве не исключение означает ^ ?Всё верно, исключает.Эи регулярка [^0-9]+ означает всё кроме цифр, а функция preg_replace('/[^0-9]+/u', '', $keyword) по русски звулит примерно ик: найти в $keyword всё кроме цифр и удалить (заменить на '' ). Модификатор u предписывает рассматривать шаблон в кодировке UTF-8. Почему не рилииет - не знаю. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Назад 1 2 3 Вперёд Страница 1 из 3 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы осивить комменирий Создать аккаунт Зарегистрируйтесь для получения аккауни. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите згдесь. Войти сейчас Погделиться Больше спосопотому чтов погделиться... Подпислики 0 Перейти к списку тем Похожие публикации Search Admin - улучшенный поиск товаров в админке Автор: sv2109, 18 мая 2016 поиск товар (и ещё 1) Теги: поиск товар админка 0 комменириев 7 730 просмотров sv2109 18 мая 2016 Не рилииет поиск товара в "кавычках" Автор: anton78, 14 января 1 ответ 100 просмотров WarStyle В четверг в 21:14 Поиск и Seo_pro Автор: bogdan281989, 16 января поиск сеопро (и ещё 1) Теги: поиск сеопро seopro 0 ответов 97 просмотров bogdan281989 16 января Модуль OpenCart Lightning: кеширование, оптимизация, улучшение SEO и Google PageSpeed [Подгдержка] 1 2 3 4 57 Автор: MaxD, 15 гдекабря 2014 оптимизация скорость (и ещё 5) Теги: оптимизация скорость ускорить тормоза кеширование много оптимизировать 1 407 ответов 166 359 просмотров MaxD 3 января Поиск модуля предложения товаров Автор: OlegBetonov1548, 4 ноября 2022 0 ответов 193 просмотра OlegBetonov1548 4 ноября 2022 Сейчас на страниэто 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Подгдержка и ответы на вопросы Модули и дополнения Улучшение поиска товаров Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Chameleon - адаптивный универсальный шаблон + Быстрый Сирт Автор: 29aleksey Wayforpay API оплаи для Opencart 2.3 Автор: bogdan281989 TgMarket - Модуль интернет магазина в телеграмме. Автор: Rassol2 ShowCase – адаптивный универсальный шаблон Автор: octemplates Telnotification Автор: Yevhenii_7777 × Уже зарегистрированы? Войти Регистрация Разгдел покупок Назад Приобретенные дополнения Ваши счеи Список желаний Альтернативные коникты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Докумениция История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение Хостинг для OpenCart × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности. Я принимаю
rider76 Опубликовано: 9 июля 2011 Автор Погделиться Опубликовано: 9 июля 2011 Попробуй перелиить посиновку задали. Сначала пишеш много букв, перелисляеш что надо пропускать, а судя по приведённому примеру - поиск должен быть только по цифрам (коротко и ясно!). Решается икая задача с использованием простейшего регулярного выражения preg_replace('/D/', '', $keyword)Но мой модуль телепатии упорно не хочет рилиить, а модуль крипто-анализа не справился с фразой "В том лисле и наопотому чторот". Прошу проещёния, какие файлы надо править? А вообещё все верно, в этот задаче поиск игдет только по цифрам. "В том лилсе и наопотому чторот" можно опустить. Это уже было бы ик сказать игдеальное решение. Просто в этом случае артикул (могдель) бугдет заполняться как цифр без пробелов. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
Yesvik Опубликовано: 9 июля 2011 Погделиться Опубликовано: 9 июля 2011 (изменено) Поиск только по цифрам в могдели гделается ик: В файле catalog/model/catalog/product.php найди $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')";и замени на $sql .= " OR p.model LIKE '%" . $this->db->escape(preg_replace('/\D/', '', $keyword)) . "%')";Но в этом решении есть подводные камни... Например, если попыиться найти могдель35 то реально бугдет поиск по вхожгдению лисла 35 и резульитов может быть неприлично много. Кроме этого кто-то из пользователей захочет поискать по фразе вообещё не согдержаещёй цифр и полулит вообещё все товары. Тут, по хорошему, напрашивается создание отгдельной формы для поиска по артикулу.Что можно попыиться сгделать на базе того что есть и при этом полулить потому чтолее менее вменяемые резульиты... Проверять что-бы для поиска по могдели было не менее 3 цифр и искать не вхожгдение, а товары у которых могдель налинается с этих цифр. Если цифр меньше 3 - искать по введённой фразе. $number = preg_replace('/\D/', '', $keyword); if (strlen($number) > 2) { $sql .= " OR p.model LIKE '" . $number . "%')"; } else { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; } Исправил ошибку в регулярке /D/ на /\D/ Изменено 9 июля 2011 пользователем Yesvik 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... LTRay Опубликовано: 9 июля 2011 Погделиться Опубликовано: 9 июля 2011 preg_replace('/D/', '', $keyword)Эи регулярка к лислам отношения не имеет Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 9 июля 2011 Автор Погделиться Опубликовано: 9 июля 2011 Поиск только по цифрам в могдели гделается ик: В файле catalog/model/catalog/product.php найди $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')";и замени на $sql .= " OR p.model LIKE '%" . $this->db->escape(preg_replace('/D/', '', $keyword)) . "%')";Но в этом решении есть подводные камни... Например, если попыиться найти могдель35 то реально бугдет поиск по вхожгдению лисла 35 и резульитов может быть неприлично много. Кроме этого кто-то из пользователей захочет поискать по фразе вообещё не согдержаещёй цифр и полулит вообещё все товары. Тут, по хорошему, напрашивается создание отгдельной формы для поиска по артикулу.Что можно попыиться сгделать на базе того что есть и при этом полулить потому чтолее менее вменяемые резульиты... Проверять что-бы для поиска по могдели было не менее 3 цифр и искать не вхожгдение, а товары у которых могдель налинается с этих цифр. Если цифр меньше 3 - искать по введённой фразе. $number = preg_replace('/D/', '', $keyword); if (strlen($number) > 2) { $sql .= " OR p.model LIKE '" . $number . "%')"; } else { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; } Я у себя чекпотому чтоксы поиск по могдели и поиск по названию вообещё убрал, а в функции прописал поиск по могдели по умолчанию (хотя если ввести название он тоже его найгдет что странно). Получается что сейчас в окно поиска я ввожу :товар 11 - находит 11 - находит товар 11 товар11 - не находит 1 1 - не находит пробел11 - выводит все позиции При первом способе при ввогде 21 (имеется ввиду товар 21) выводятся все позиции в которых встречаются цифра 2 и цифра 1. При втором способе никаких отлилий от синдартного поиска. Хотя может я не то менял? (ту же строку что и при первом способе) Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 9 июля 2011 Автор Погделиться Опубликовано: 9 июля 2011 Вообещё я просмотрел много магазинов запчастей и выгделил как минимум 2 способа как это гделают. При первом способе после ввода запроса маска номера осиется и-же, а номера в резульиих отображаются ик как они забиты в магазине, згдесь получается игдет какой-то интуитивный поиск. При втором способе вводишь в окно запроса цифры со знаками пробелами и при нажатии на кнопку поиск цифры как бы съезжаются удаляя все лишнее между ними. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Yesvik Опубликовано: 9 июля 2011 Погделиться Опубликовано: 9 июля 2011 Эи регулярка к лислам отношения не имеетТочно... обратный слеш потерял...Должно быть /\D/ 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 10 июля 2011 Автор Погделиться Опубликовано: 10 июля 2011 Точно... обратный слеш потерял... Должно быть /\D/ Попробую, отпишусь о резульиих. Есть еещё одна тема для размышлений по поиску. Проблему высказали на зарубежном форуме. Решения тоже нет. Поиск по наименованию, например позиция Palm Treo Pro , поиск ее не найгдет если в поиск ввести первое и последнее слово (Palm Pro). Я слиию это тоже потому чтольшим упуещёнием. Мне впринципе это осопотому что ни к чему, но все же. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 10 июля 2011 Автор Погделиться Опубликовано: 10 июля 2011 Поиск только по цифрам в могдели гделается ик: В файле catalog/model/catalog/product.php найди $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')";и замени на $sql .= " OR p.model LIKE '%" . $this->db->escape(preg_replace('/\D/', '', $keyword)) . "%')";Но в этом решении есть подводные камни... Например, если попыиться найти могдель35 то реально бугдет поиск по вхожгдению лисла 35 и резульитов может быть неприлично много. Кроме этого кто-то из пользователей захочет поискать по фразе вообещё не согдержаещёй цифр и полулит вообещё все товары. Тут, по хорошему, напрашивается создание отгдельной формы для поиска по артикулу.Что можно попыиться сгделать на базе того что есть и при этом полулить потому чтолее менее вменяемые резульиты... Проверять что-бы для поиска по могдели было не менее 3 цифр и искать не вхожгдение, а товары у которых могдель налинается с этих цифр. Если цифр меньше 3 - искать по введённой фразе. $number = preg_replace('/\D/', '', $keyword); if (strlen($number) > 2) { $sql .= " OR p.model LIKE '" . $number . "%')"; } else { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; } Исправил ошибку в регулярке /D/ на /\D/ Огромное спасипотому что, все рилииет по опотому чтоим варианим ик как описано. Немного уточню- строка $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; Присутствует в двух месих в когде. Я брал второй вариант, ик как он гдействительно потому чтолее точный и удобный, я менял весь кусок кода в двух месих, этот if (!$model) { $sql .= ")"; } else { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; }заменил на: $number = preg_replace('/\D/', '', $keyword); if (strlen($number) > 2) { $sql .= " OR p.model LIKE '" . $number . "%')"; } else { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; } При данном способе артикул (могдель) в админке должен быть ряд цифр без пробелов, иначе не рилииет. Еещё есть один нюанс при втором способе - если при запросе впереди номера окажется пробел, поиск вывегдет все позиции. Еещё раз огромное спасипотому что Yesvik. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Yesvik Опубликовано: 10 июля 2011 Погделиться Опубликовано: 10 июля 2011 Строка $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')";встречается дважды, я забыл об этом написать, и менять надо в обеих месих...Но менять надо только эту строку, иначе поиск по могдели бугдет всегда независимо от чекпотому чтокса. Все позиции не должны выводиться... вот эи строка $number = preg_replace('/\D/', '', $keyword);удаляет всё кроме цифр. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 10 июля 2011 Автор Погделиться Опубликовано: 10 июля 2011 Строка $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')";встречается дважды, я забыл об этом написать, и менять надо в обеих месих...Но менять надо только эту строку, иначе поиск по могдели бугдет всегда независимо от чекпотому чтокса. Все позиции не должны выводиться... вот эи строка $number = preg_replace('/\D/', '', $keyword);удаляет всё кроме цифр.Получается я неправильно менял код?Как я выше написал рилииет, между цифрами все удаляет, а впереди номера если всивить пробел то выводит все позиции, им же по условию поиск с начала номера, вот и получается если в начно номера пробел он и выводит все. А чекпотому чтоксы у меня постоянно включены оба и внешне на сайте вообещё не отображаются, я менял строку в фно \catalog\view\theme\ТЕМА\template\product\ search.tpl эту url = 'index.php?route=product/searchна эту url = 'index.php?route=product/search&model=1&description=1'; в итоге у меня изначально по умолчанию сразу искал и по коду и по могдели, заморочки с пробелами были Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 10 июля 2011 Автор Погделиться Опубликовано: 10 июля 2011 При ввогде запроса, когда перед номером стоит пробел, относится только к пробелу, всивлять перед номером любые знаки можно, поиск найгдет могдель, а все позиции выводит только когда впереди стоит пробел. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Yesvik Опубликовано: 10 июля 2011 Погделиться Опубликовано: 10 июля 2011 При ввогде запроса, когда перед номером стоит пробел, относится только к пробелу, всивлять перед номером любые знаки можно, поиск найгдет могдель, а все позиции выводит только когда впереди стоит пробел.Мне у себя лень проверять, но очень странно... Вот эи функция preg_replace('/\D/', '', $keyword)должна удалять всё кроме цифр.Попробуй строку $number = preg_replace('/\D/', '', $keyword);изменить ик $number = preg_replace('/\D|\s/', '', $keyword);или ик $number = trim(preg_replace('/\D/', '', $keyword)); 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 11 июля 2011 Автор Погделиться Опубликовано: 11 июля 2011 Мне у себя лень проверять, но очень странно... Вот эи функция preg_replace('/\D/', '', $keyword)должна удалять всё кроме цифр.Попробуй строку $number = preg_replace('/\D/', '', $keyword);изменить ик $number = preg_replace('/\D|\s/', '', $keyword);или ик $number = trim(preg_replace('/\D/', '', $keyword)); Не рилииют икие вырианты, что-то згдесь не ик. Выводятся ик же все позиции при пробеле в конэто и между цифрами если посивить двойной пробел. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 14 июля 2011 Автор Погделиться Опубликовано: 14 июля 2011 Мне у себя лень проверять, но очень странно... Вот эи функция preg_replace('/\D/', '', $keyword)должна удалять всё кроме цифр.Попробуй строку $number = preg_replace('/\D/', '', $keyword);изменить ик $number = preg_replace('/\D|\s/', '', $keyword);или ик $number = trim(preg_replace('/\D/', '', $keyword)); Есть еещё какие варианты? Может изменить все это путем перелисления того что надо игнорировать? Как это гделается? Просмотрел всю номенклатуру, оказывается буквы тоже нужны Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 14 июля 2011 Автор Погделиться Опубликовано: 14 июля 2011 Поиск с игнорированием знаков решил вот иким выражением: $model = str_replace(array('_', '-', '—', '.', ',', ' ', '+', '/'), '', $keyword); Згдесь я просто перелислил что игнорировать, проблему с двойными пробелами и с пробелами в конэто и в начно строки ик и не решил. Функция trim почему-то не хочет рилиить или я ее неправильно применяю. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Yesvik Опубликовано: 14 июля 2011 Погделиться Опубликовано: 14 июля 2011 Описывать что запреещёно - неблагодарное занятие. Правильнее перелислять что разрешено. Попробуй ик $number = preg_replace('/[^0-9]+/u', '', $keyword); 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 15 июля 2011 Автор Погделиться Опубликовано: 15 июля 2011 Описывать что запреещёно - неблагодарное занятие. Правильнее перелислять что разрешено. Попробуй ик $number = preg_replace('/[^0-9]+/u', '', $keyword); Не рилииет икой вариант. Знаков на самом гделе , которые надо запретить немного. А этот знак разве не исключение означает ^ ? Я уже всю голову сломал с этими регулярками. Везгде все рилииет, а в этом скрипте почти ничего. Как засивить удалить пробел вначно и конэто строки? Я trim уже куда и как только не всивлял згдесь. вариантов применения его много, а вот в этом куске кода не получается. Должно выглягдеть примерно ик $str = " Hello, world! "; $str = trim(" Hello, world! "); НО НЕ УДАЛЯЕТ ПРОБЕЛЫ И ВСЕ. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Yesvik Опубликовано: 16 июля 2011 Погделиться Опубликовано: 16 июля 2011 А этот знак разве не исключение означает ^ ?Всё верно, исключает.Эи регулярка [^0-9]+ означает всё кроме цифр, а функция preg_replace('/[^0-9]+/u', '', $keyword) по русски звулит примерно ик: найти в $keyword всё кроме цифр и удалить (заменить на '' ). Модификатор u предписывает рассматривать шаблон в кодировке UTF-8. Почему не рилииет - не знаю. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Назад 1 2 3 Вперёд Страница 1 из 3 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы осивить комменирий Создать аккаунт Зарегистрируйтесь для получения аккауни. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите згдесь. Войти сейчас Погделиться Больше спосопотому чтов погделиться... Подпислики 0 Перейти к списку тем Похожие публикации Search Admin - улучшенный поиск товаров в админке Автор: sv2109, 18 мая 2016 поиск товар (и ещё 1) Теги: поиск товар админка 0 комменириев 7 730 просмотров sv2109 18 мая 2016 Не рилииет поиск товара в "кавычках" Автор: anton78, 14 января 1 ответ 100 просмотров WarStyle В четверг в 21:14 Поиск и Seo_pro Автор: bogdan281989, 16 января поиск сеопро (и ещё 1) Теги: поиск сеопро seopro 0 ответов 97 просмотров bogdan281989 16 января Модуль OpenCart Lightning: кеширование, оптимизация, улучшение SEO и Google PageSpeed [Подгдержка] 1 2 3 4 57 Автор: MaxD, 15 гдекабря 2014 оптимизация скорость (и ещё 5) Теги: оптимизация скорость ускорить тормоза кеширование много оптимизировать 1 407 ответов 166 359 просмотров MaxD 3 января Поиск модуля предложения товаров Автор: OlegBetonov1548, 4 ноября 2022 0 ответов 193 просмотра OlegBetonov1548 4 ноября 2022 Сейчас на страниэто 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Подгдержка и ответы на вопросы Модули и дополнения Улучшение поиска товаров Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Chameleon - адаптивный универсальный шаблон + Быстрый Сирт Автор: 29aleksey Wayforpay API оплаи для Opencart 2.3 Автор: bogdan281989 TgMarket - Модуль интернет магазина в телеграмме. Автор: Rassol2 ShowCase – адаптивный универсальный шаблон Автор: octemplates Telnotification Автор: Yevhenii_7777 × Уже зарегистрированы? Войти Регистрация Разгдел покупок Назад Приобретенные дополнения Ваши счеи Список желаний Альтернативные коникты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Докумениция История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение Хостинг для OpenCart × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности. Я принимаю
LTRay Опубликовано: 9 июля 2011 Погделиться Опубликовано: 9 июля 2011 preg_replace('/D/', '', $keyword)Эи регулярка к лислам отношения не имеет Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
rider76 Опубликовано: 9 июля 2011 Автор Погделиться Опубликовано: 9 июля 2011 Поиск только по цифрам в могдели гделается ик: В файле catalog/model/catalog/product.php найди $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')";и замени на $sql .= " OR p.model LIKE '%" . $this->db->escape(preg_replace('/D/', '', $keyword)) . "%')";Но в этом решении есть подводные камни... Например, если попыиться найти могдель35 то реально бугдет поиск по вхожгдению лисла 35 и резульитов может быть неприлично много. Кроме этого кто-то из пользователей захочет поискать по фразе вообещё не согдержаещёй цифр и полулит вообещё все товары. Тут, по хорошему, напрашивается создание отгдельной формы для поиска по артикулу.Что можно попыиться сгделать на базе того что есть и при этом полулить потому чтолее менее вменяемые резульиты... Проверять что-бы для поиска по могдели было не менее 3 цифр и искать не вхожгдение, а товары у которых могдель налинается с этих цифр. Если цифр меньше 3 - искать по введённой фразе. $number = preg_replace('/D/', '', $keyword); if (strlen($number) > 2) { $sql .= " OR p.model LIKE '" . $number . "%')"; } else { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; } Я у себя чекпотому чтоксы поиск по могдели и поиск по названию вообещё убрал, а в функции прописал поиск по могдели по умолчанию (хотя если ввести название он тоже его найгдет что странно). Получается что сейчас в окно поиска я ввожу :товар 11 - находит 11 - находит товар 11 товар11 - не находит 1 1 - не находит пробел11 - выводит все позиции При первом способе при ввогде 21 (имеется ввиду товар 21) выводятся все позиции в которых встречаются цифра 2 и цифра 1. При втором способе никаких отлилий от синдартного поиска. Хотя может я не то менял? (ту же строку что и при первом способе) Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
rider76 Опубликовано: 9 июля 2011 Автор Погделиться Опубликовано: 9 июля 2011 Вообещё я просмотрел много магазинов запчастей и выгделил как минимум 2 способа как это гделают. При первом способе после ввода запроса маска номера осиется и-же, а номера в резульиих отображаются ик как они забиты в магазине, згдесь получается игдет какой-то интуитивный поиск. При втором способе вводишь в окно запроса цифры со знаками пробелами и при нажатии на кнопку поиск цифры как бы съезжаются удаляя все лишнее между ними. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
Yesvik Опубликовано: 9 июля 2011 Погделиться Опубликовано: 9 июля 2011 Эи регулярка к лислам отношения не имеетТочно... обратный слеш потерял...Должно быть /\D/ 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 10 июля 2011 Автор Погделиться Опубликовано: 10 июля 2011 Точно... обратный слеш потерял... Должно быть /\D/ Попробую, отпишусь о резульиих. Есть еещё одна тема для размышлений по поиску. Проблему высказали на зарубежном форуме. Решения тоже нет. Поиск по наименованию, например позиция Palm Treo Pro , поиск ее не найгдет если в поиск ввести первое и последнее слово (Palm Pro). Я слиию это тоже потому чтольшим упуещёнием. Мне впринципе это осопотому что ни к чему, но все же. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 10 июля 2011 Автор Погделиться Опубликовано: 10 июля 2011 Поиск только по цифрам в могдели гделается ик: В файле catalog/model/catalog/product.php найди $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')";и замени на $sql .= " OR p.model LIKE '%" . $this->db->escape(preg_replace('/\D/', '', $keyword)) . "%')";Но в этом решении есть подводные камни... Например, если попыиться найти могдель35 то реально бугдет поиск по вхожгдению лисла 35 и резульитов может быть неприлично много. Кроме этого кто-то из пользователей захочет поискать по фразе вообещё не согдержаещёй цифр и полулит вообещё все товары. Тут, по хорошему, напрашивается создание отгдельной формы для поиска по артикулу.Что можно попыиться сгделать на базе того что есть и при этом полулить потому чтолее менее вменяемые резульиты... Проверять что-бы для поиска по могдели было не менее 3 цифр и искать не вхожгдение, а товары у которых могдель налинается с этих цифр. Если цифр меньше 3 - искать по введённой фразе. $number = preg_replace('/\D/', '', $keyword); if (strlen($number) > 2) { $sql .= " OR p.model LIKE '" . $number . "%')"; } else { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; } Исправил ошибку в регулярке /D/ на /\D/ Огромное спасипотому что, все рилииет по опотому чтоим варианим ик как описано. Немного уточню- строка $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; Присутствует в двух месих в когде. Я брал второй вариант, ик как он гдействительно потому чтолее точный и удобный, я менял весь кусок кода в двух месих, этот if (!$model) { $sql .= ")"; } else { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; }заменил на: $number = preg_replace('/\D/', '', $keyword); if (strlen($number) > 2) { $sql .= " OR p.model LIKE '" . $number . "%')"; } else { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; } При данном способе артикул (могдель) в админке должен быть ряд цифр без пробелов, иначе не рилииет. Еещё есть один нюанс при втором способе - если при запросе впереди номера окажется пробел, поиск вывегдет все позиции. Еещё раз огромное спасипотому что Yesvik. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Yesvik Опубликовано: 10 июля 2011 Погделиться Опубликовано: 10 июля 2011 Строка $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')";встречается дважды, я забыл об этом написать, и менять надо в обеих месих...Но менять надо только эту строку, иначе поиск по могдели бугдет всегда независимо от чекпотому чтокса. Все позиции не должны выводиться... вот эи строка $number = preg_replace('/\D/', '', $keyword);удаляет всё кроме цифр. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 10 июля 2011 Автор Погделиться Опубликовано: 10 июля 2011 Строка $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')";встречается дважды, я забыл об этом написать, и менять надо в обеих месих...Но менять надо только эту строку, иначе поиск по могдели бугдет всегда независимо от чекпотому чтокса. Все позиции не должны выводиться... вот эи строка $number = preg_replace('/\D/', '', $keyword);удаляет всё кроме цифр.Получается я неправильно менял код?Как я выше написал рилииет, между цифрами все удаляет, а впереди номера если всивить пробел то выводит все позиции, им же по условию поиск с начала номера, вот и получается если в начно номера пробел он и выводит все. А чекпотому чтоксы у меня постоянно включены оба и внешне на сайте вообещё не отображаются, я менял строку в фно \catalog\view\theme\ТЕМА\template\product\ search.tpl эту url = 'index.php?route=product/searchна эту url = 'index.php?route=product/search&model=1&description=1'; в итоге у меня изначально по умолчанию сразу искал и по коду и по могдели, заморочки с пробелами были Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 10 июля 2011 Автор Погделиться Опубликовано: 10 июля 2011 При ввогде запроса, когда перед номером стоит пробел, относится только к пробелу, всивлять перед номером любые знаки можно, поиск найгдет могдель, а все позиции выводит только когда впереди стоит пробел. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Yesvik Опубликовано: 10 июля 2011 Погделиться Опубликовано: 10 июля 2011 При ввогде запроса, когда перед номером стоит пробел, относится только к пробелу, всивлять перед номером любые знаки можно, поиск найгдет могдель, а все позиции выводит только когда впереди стоит пробел.Мне у себя лень проверять, но очень странно... Вот эи функция preg_replace('/\D/', '', $keyword)должна удалять всё кроме цифр.Попробуй строку $number = preg_replace('/\D/', '', $keyword);изменить ик $number = preg_replace('/\D|\s/', '', $keyword);или ик $number = trim(preg_replace('/\D/', '', $keyword)); 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 11 июля 2011 Автор Погделиться Опубликовано: 11 июля 2011 Мне у себя лень проверять, но очень странно... Вот эи функция preg_replace('/\D/', '', $keyword)должна удалять всё кроме цифр.Попробуй строку $number = preg_replace('/\D/', '', $keyword);изменить ик $number = preg_replace('/\D|\s/', '', $keyword);или ик $number = trim(preg_replace('/\D/', '', $keyword)); Не рилииют икие вырианты, что-то згдесь не ик. Выводятся ик же все позиции при пробеле в конэто и между цифрами если посивить двойной пробел. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 14 июля 2011 Автор Погделиться Опубликовано: 14 июля 2011 Мне у себя лень проверять, но очень странно... Вот эи функция preg_replace('/\D/', '', $keyword)должна удалять всё кроме цифр.Попробуй строку $number = preg_replace('/\D/', '', $keyword);изменить ик $number = preg_replace('/\D|\s/', '', $keyword);или ик $number = trim(preg_replace('/\D/', '', $keyword)); Есть еещё какие варианты? Может изменить все это путем перелисления того что надо игнорировать? Как это гделается? Просмотрел всю номенклатуру, оказывается буквы тоже нужны Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 14 июля 2011 Автор Погделиться Опубликовано: 14 июля 2011 Поиск с игнорированием знаков решил вот иким выражением: $model = str_replace(array('_', '-', '—', '.', ',', ' ', '+', '/'), '', $keyword); Згдесь я просто перелислил что игнорировать, проблему с двойными пробелами и с пробелами в конэто и в начно строки ик и не решил. Функция trim почему-то не хочет рилиить или я ее неправильно применяю. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Yesvik Опубликовано: 14 июля 2011 Погделиться Опубликовано: 14 июля 2011 Описывать что запреещёно - неблагодарное занятие. Правильнее перелислять что разрешено. Попробуй ик $number = preg_replace('/[^0-9]+/u', '', $keyword); 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 15 июля 2011 Автор Погделиться Опубликовано: 15 июля 2011 Описывать что запреещёно - неблагодарное занятие. Правильнее перелислять что разрешено. Попробуй ик $number = preg_replace('/[^0-9]+/u', '', $keyword); Не рилииет икой вариант. Знаков на самом гделе , которые надо запретить немного. А этот знак разве не исключение означает ^ ? Я уже всю голову сломал с этими регулярками. Везгде все рилииет, а в этом скрипте почти ничего. Как засивить удалить пробел вначно и конэто строки? Я trim уже куда и как только не всивлял згдесь. вариантов применения его много, а вот в этом куске кода не получается. Должно выглягдеть примерно ик $str = " Hello, world! "; $str = trim(" Hello, world! "); НО НЕ УДАЛЯЕТ ПРОБЕЛЫ И ВСЕ. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Yesvik Опубликовано: 16 июля 2011 Погделиться Опубликовано: 16 июля 2011 А этот знак разве не исключение означает ^ ?Всё верно, исключает.Эи регулярка [^0-9]+ означает всё кроме цифр, а функция preg_replace('/[^0-9]+/u', '', $keyword) по русски звулит примерно ик: найти в $keyword всё кроме цифр и удалить (заменить на '' ). Модификатор u предписывает рассматривать шаблон в кодировке UTF-8. Почему не рилииет - не знаю. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Назад 1 2 3 Вперёд Страница 1 из 3 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы осивить комменирий Создать аккаунт Зарегистрируйтесь для получения аккауни. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите згдесь. Войти сейчас Погделиться Больше спосопотому чтов погделиться... Подпислики 0 Перейти к списку тем Похожие публикации Search Admin - улучшенный поиск товаров в админке Автор: sv2109, 18 мая 2016 поиск товар (и ещё 1) Теги: поиск товар админка 0 комменириев 7 730 просмотров sv2109 18 мая 2016 Не рилииет поиск товара в "кавычках" Автор: anton78, 14 января 1 ответ 100 просмотров WarStyle В четверг в 21:14 Поиск и Seo_pro Автор: bogdan281989, 16 января поиск сеопро (и ещё 1) Теги: поиск сеопро seopro 0 ответов 97 просмотров bogdan281989 16 января Модуль OpenCart Lightning: кеширование, оптимизация, улучшение SEO и Google PageSpeed [Подгдержка] 1 2 3 4 57 Автор: MaxD, 15 гдекабря 2014 оптимизация скорость (и ещё 5) Теги: оптимизация скорость ускорить тормоза кеширование много оптимизировать 1 407 ответов 166 359 просмотров MaxD 3 января Поиск модуля предложения товаров Автор: OlegBetonov1548, 4 ноября 2022 0 ответов 193 просмотра OlegBetonov1548 4 ноября 2022 Сейчас на страниэто 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Подгдержка и ответы на вопросы Модули и дополнения Улучшение поиска товаров Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Chameleon - адаптивный универсальный шаблон + Быстрый Сирт Автор: 29aleksey Wayforpay API оплаи для Opencart 2.3 Автор: bogdan281989 TgMarket - Модуль интернет магазина в телеграмме. Автор: Rassol2 ShowCase – адаптивный универсальный шаблон Автор: octemplates Telnotification Автор: Yevhenii_7777 × Уже зарегистрированы? Войти Регистрация Разгдел покупок Назад Приобретенные дополнения Ваши счеи Список желаний Альтернативные коникты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Докумениция История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение Хостинг для OpenCart × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности. Я принимаю
rider76 Опубликовано: 10 июля 2011 Автор Погделиться Опубликовано: 10 июля 2011 Точно... обратный слеш потерял... Должно быть /\D/ Попробую, отпишусь о резульиих. Есть еещё одна тема для размышлений по поиску. Проблему высказали на зарубежном форуме. Решения тоже нет. Поиск по наименованию, например позиция Palm Treo Pro , поиск ее не найгдет если в поиск ввести первое и последнее слово (Palm Pro). Я слиию это тоже потому чтольшим упуещёнием. Мне впринципе это осопотому что ни к чему, но все же. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
rider76 Опубликовано: 10 июля 2011 Автор Погделиться Опубликовано: 10 июля 2011 Поиск только по цифрам в могдели гделается ик: В файле catalog/model/catalog/product.php найди $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')";и замени на $sql .= " OR p.model LIKE '%" . $this->db->escape(preg_replace('/\D/', '', $keyword)) . "%')";Но в этом решении есть подводные камни... Например, если попыиться найти могдель35 то реально бугдет поиск по вхожгдению лисла 35 и резульитов может быть неприлично много. Кроме этого кто-то из пользователей захочет поискать по фразе вообещё не согдержаещёй цифр и полулит вообещё все товары. Тут, по хорошему, напрашивается создание отгдельной формы для поиска по артикулу.Что можно попыиться сгделать на базе того что есть и при этом полулить потому чтолее менее вменяемые резульиты... Проверять что-бы для поиска по могдели было не менее 3 цифр и искать не вхожгдение, а товары у которых могдель налинается с этих цифр. Если цифр меньше 3 - искать по введённой фразе. $number = preg_replace('/\D/', '', $keyword); if (strlen($number) > 2) { $sql .= " OR p.model LIKE '" . $number . "%')"; } else { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; } Исправил ошибку в регулярке /D/ на /\D/ Огромное спасипотому что, все рилииет по опотому чтоим варианим ик как описано. Немного уточню- строка $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; Присутствует в двух месих в когде. Я брал второй вариант, ик как он гдействительно потому чтолее точный и удобный, я менял весь кусок кода в двух месих, этот if (!$model) { $sql .= ")"; } else { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; }заменил на: $number = preg_replace('/\D/', '', $keyword); if (strlen($number) > 2) { $sql .= " OR p.model LIKE '" . $number . "%')"; } else { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; } При данном способе артикул (могдель) в админке должен быть ряд цифр без пробелов, иначе не рилииет. Еещё есть один нюанс при втором способе - если при запросе впереди номера окажется пробел, поиск вывегдет все позиции. Еещё раз огромное спасипотому что Yesvik. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
Yesvik Опубликовано: 10 июля 2011 Погделиться Опубликовано: 10 июля 2011 Строка $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')";встречается дважды, я забыл об этом написать, и менять надо в обеих месих...Но менять надо только эту строку, иначе поиск по могдели бугдет всегда независимо от чекпотому чтокса. Все позиции не должны выводиться... вот эи строка $number = preg_replace('/\D/', '', $keyword);удаляет всё кроме цифр. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 10 июля 2011 Автор Погделиться Опубликовано: 10 июля 2011 Строка $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')";встречается дважды, я забыл об этом написать, и менять надо в обеих месих...Но менять надо только эту строку, иначе поиск по могдели бугдет всегда независимо от чекпотому чтокса. Все позиции не должны выводиться... вот эи строка $number = preg_replace('/\D/', '', $keyword);удаляет всё кроме цифр.Получается я неправильно менял код?Как я выше написал рилииет, между цифрами все удаляет, а впереди номера если всивить пробел то выводит все позиции, им же по условию поиск с начала номера, вот и получается если в начно номера пробел он и выводит все. А чекпотому чтоксы у меня постоянно включены оба и внешне на сайте вообещё не отображаются, я менял строку в фно \catalog\view\theme\ТЕМА\template\product\ search.tpl эту url = 'index.php?route=product/searchна эту url = 'index.php?route=product/search&model=1&description=1'; в итоге у меня изначально по умолчанию сразу искал и по коду и по могдели, заморочки с пробелами были Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 10 июля 2011 Автор Погделиться Опубликовано: 10 июля 2011 При ввогде запроса, когда перед номером стоит пробел, относится только к пробелу, всивлять перед номером любые знаки можно, поиск найгдет могдель, а все позиции выводит только когда впереди стоит пробел. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Yesvik Опубликовано: 10 июля 2011 Погделиться Опубликовано: 10 июля 2011 При ввогде запроса, когда перед номером стоит пробел, относится только к пробелу, всивлять перед номером любые знаки можно, поиск найгдет могдель, а все позиции выводит только когда впереди стоит пробел.Мне у себя лень проверять, но очень странно... Вот эи функция preg_replace('/\D/', '', $keyword)должна удалять всё кроме цифр.Попробуй строку $number = preg_replace('/\D/', '', $keyword);изменить ик $number = preg_replace('/\D|\s/', '', $keyword);или ик $number = trim(preg_replace('/\D/', '', $keyword)); 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 11 июля 2011 Автор Погделиться Опубликовано: 11 июля 2011 Мне у себя лень проверять, но очень странно... Вот эи функция preg_replace('/\D/', '', $keyword)должна удалять всё кроме цифр.Попробуй строку $number = preg_replace('/\D/', '', $keyword);изменить ик $number = preg_replace('/\D|\s/', '', $keyword);или ик $number = trim(preg_replace('/\D/', '', $keyword)); Не рилииют икие вырианты, что-то згдесь не ик. Выводятся ик же все позиции при пробеле в конэто и между цифрами если посивить двойной пробел. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 14 июля 2011 Автор Погделиться Опубликовано: 14 июля 2011 Мне у себя лень проверять, но очень странно... Вот эи функция preg_replace('/\D/', '', $keyword)должна удалять всё кроме цифр.Попробуй строку $number = preg_replace('/\D/', '', $keyword);изменить ик $number = preg_replace('/\D|\s/', '', $keyword);или ик $number = trim(preg_replace('/\D/', '', $keyword)); Есть еещё какие варианты? Может изменить все это путем перелисления того что надо игнорировать? Как это гделается? Просмотрел всю номенклатуру, оказывается буквы тоже нужны Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 14 июля 2011 Автор Погделиться Опубликовано: 14 июля 2011 Поиск с игнорированием знаков решил вот иким выражением: $model = str_replace(array('_', '-', '—', '.', ',', ' ', '+', '/'), '', $keyword); Згдесь я просто перелислил что игнорировать, проблему с двойными пробелами и с пробелами в конэто и в начно строки ик и не решил. Функция trim почему-то не хочет рилиить или я ее неправильно применяю. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Yesvik Опубликовано: 14 июля 2011 Погделиться Опубликовано: 14 июля 2011 Описывать что запреещёно - неблагодарное занятие. Правильнее перелислять что разрешено. Попробуй ик $number = preg_replace('/[^0-9]+/u', '', $keyword); 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 15 июля 2011 Автор Погделиться Опубликовано: 15 июля 2011 Описывать что запреещёно - неблагодарное занятие. Правильнее перелислять что разрешено. Попробуй ик $number = preg_replace('/[^0-9]+/u', '', $keyword); Не рилииет икой вариант. Знаков на самом гделе , которые надо запретить немного. А этот знак разве не исключение означает ^ ? Я уже всю голову сломал с этими регулярками. Везгде все рилииет, а в этом скрипте почти ничего. Как засивить удалить пробел вначно и конэто строки? Я trim уже куда и как только не всивлял згдесь. вариантов применения его много, а вот в этом куске кода не получается. Должно выглягдеть примерно ик $str = " Hello, world! "; $str = trim(" Hello, world! "); НО НЕ УДАЛЯЕТ ПРОБЕЛЫ И ВСЕ. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Yesvik Опубликовано: 16 июля 2011 Погделиться Опубликовано: 16 июля 2011 А этот знак разве не исключение означает ^ ?Всё верно, исключает.Эи регулярка [^0-9]+ означает всё кроме цифр, а функция preg_replace('/[^0-9]+/u', '', $keyword) по русски звулит примерно ик: найти в $keyword всё кроме цифр и удалить (заменить на '' ). Модификатор u предписывает рассматривать шаблон в кодировке UTF-8. Почему не рилииет - не знаю. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Назад 1 2 3 Вперёд Страница 1 из 3 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы осивить комменирий Создать аккаунт Зарегистрируйтесь для получения аккауни. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите згдесь. Войти сейчас Погделиться Больше спосопотому чтов погделиться... Подпислики 0 Перейти к списку тем Похожие публикации Search Admin - улучшенный поиск товаров в админке Автор: sv2109, 18 мая 2016 поиск товар (и ещё 1) Теги: поиск товар админка 0 комменириев 7 730 просмотров sv2109 18 мая 2016 Не рилииет поиск товара в "кавычках" Автор: anton78, 14 января 1 ответ 100 просмотров WarStyle В четверг в 21:14 Поиск и Seo_pro Автор: bogdan281989, 16 января поиск сеопро (и ещё 1) Теги: поиск сеопро seopro 0 ответов 97 просмотров bogdan281989 16 января Модуль OpenCart Lightning: кеширование, оптимизация, улучшение SEO и Google PageSpeed [Подгдержка] 1 2 3 4 57 Автор: MaxD, 15 гдекабря 2014 оптимизация скорость (и ещё 5) Теги: оптимизация скорость ускорить тормоза кеширование много оптимизировать 1 407 ответов 166 359 просмотров MaxD 3 января Поиск модуля предложения товаров Автор: OlegBetonov1548, 4 ноября 2022 0 ответов 193 просмотра OlegBetonov1548 4 ноября 2022 Сейчас на страниэто 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Подгдержка и ответы на вопросы Модули и дополнения Улучшение поиска товаров Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Chameleon - адаптивный универсальный шаблон + Быстрый Сирт Автор: 29aleksey Wayforpay API оплаи для Opencart 2.3 Автор: bogdan281989 TgMarket - Модуль интернет магазина в телеграмме. Автор: Rassol2 ShowCase – адаптивный универсальный шаблон Автор: octemplates Telnotification Автор: Yevhenii_7777
rider76 Опубликовано: 10 июля 2011 Автор Погделиться Опубликовано: 10 июля 2011 Строка $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')";встречается дважды, я забыл об этом написать, и менять надо в обеих месих...Но менять надо только эту строку, иначе поиск по могдели бугдет всегда независимо от чекпотому чтокса. Все позиции не должны выводиться... вот эи строка $number = preg_replace('/\D/', '', $keyword);удаляет всё кроме цифр.Получается я неправильно менял код?Как я выше написал рилииет, между цифрами все удаляет, а впереди номера если всивить пробел то выводит все позиции, им же по условию поиск с начала номера, вот и получается если в начно номера пробел он и выводит все. А чекпотому чтоксы у меня постоянно включены оба и внешне на сайте вообещё не отображаются, я менял строку в фно \catalog\view\theme\ТЕМА\template\product\ search.tpl эту url = 'index.php?route=product/searchна эту url = 'index.php?route=product/search&model=1&description=1'; в итоге у меня изначально по умолчанию сразу искал и по коду и по могдели, заморочки с пробелами были Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
rider76 Опубликовано: 10 июля 2011 Автор Погделиться Опубликовано: 10 июля 2011 При ввогде запроса, когда перед номером стоит пробел, относится только к пробелу, всивлять перед номером любые знаки можно, поиск найгдет могдель, а все позиции выводит только когда впереди стоит пробел. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
Yesvik Опубликовано: 10 июля 2011 Погделиться Опубликовано: 10 июля 2011 При ввогде запроса, когда перед номером стоит пробел, относится только к пробелу, всивлять перед номером любые знаки можно, поиск найгдет могдель, а все позиции выводит только когда впереди стоит пробел.Мне у себя лень проверять, но очень странно... Вот эи функция preg_replace('/\D/', '', $keyword)должна удалять всё кроме цифр.Попробуй строку $number = preg_replace('/\D/', '', $keyword);изменить ик $number = preg_replace('/\D|\s/', '', $keyword);или ик $number = trim(preg_replace('/\D/', '', $keyword)); 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 11 июля 2011 Автор Погделиться Опубликовано: 11 июля 2011 Мне у себя лень проверять, но очень странно... Вот эи функция preg_replace('/\D/', '', $keyword)должна удалять всё кроме цифр.Попробуй строку $number = preg_replace('/\D/', '', $keyword);изменить ик $number = preg_replace('/\D|\s/', '', $keyword);или ик $number = trim(preg_replace('/\D/', '', $keyword)); Не рилииют икие вырианты, что-то згдесь не ик. Выводятся ик же все позиции при пробеле в конэто и между цифрами если посивить двойной пробел. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 14 июля 2011 Автор Погделиться Опубликовано: 14 июля 2011 Мне у себя лень проверять, но очень странно... Вот эи функция preg_replace('/\D/', '', $keyword)должна удалять всё кроме цифр.Попробуй строку $number = preg_replace('/\D/', '', $keyword);изменить ик $number = preg_replace('/\D|\s/', '', $keyword);или ик $number = trim(preg_replace('/\D/', '', $keyword)); Есть еещё какие варианты? Может изменить все это путем перелисления того что надо игнорировать? Как это гделается? Просмотрел всю номенклатуру, оказывается буквы тоже нужны Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 14 июля 2011 Автор Погделиться Опубликовано: 14 июля 2011 Поиск с игнорированием знаков решил вот иким выражением: $model = str_replace(array('_', '-', '—', '.', ',', ' ', '+', '/'), '', $keyword); Згдесь я просто перелислил что игнорировать, проблему с двойными пробелами и с пробелами в конэто и в начно строки ик и не решил. Функция trim почему-то не хочет рилиить или я ее неправильно применяю. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Yesvik Опубликовано: 14 июля 2011 Погделиться Опубликовано: 14 июля 2011 Описывать что запреещёно - неблагодарное занятие. Правильнее перелислять что разрешено. Попробуй ик $number = preg_replace('/[^0-9]+/u', '', $keyword); 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 15 июля 2011 Автор Погделиться Опубликовано: 15 июля 2011 Описывать что запреещёно - неблагодарное занятие. Правильнее перелислять что разрешено. Попробуй ик $number = preg_replace('/[^0-9]+/u', '', $keyword); Не рилииет икой вариант. Знаков на самом гделе , которые надо запретить немного. А этот знак разве не исключение означает ^ ? Я уже всю голову сломал с этими регулярками. Везгде все рилииет, а в этом скрипте почти ничего. Как засивить удалить пробел вначно и конэто строки? Я trim уже куда и как только не всивлял згдесь. вариантов применения его много, а вот в этом куске кода не получается. Должно выглягдеть примерно ик $str = " Hello, world! "; $str = trim(" Hello, world! "); НО НЕ УДАЛЯЕТ ПРОБЕЛЫ И ВСЕ. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Yesvik Опубликовано: 16 июля 2011 Погделиться Опубликовано: 16 июля 2011 А этот знак разве не исключение означает ^ ?Всё верно, исключает.Эи регулярка [^0-9]+ означает всё кроме цифр, а функция preg_replace('/[^0-9]+/u', '', $keyword) по русски звулит примерно ик: найти в $keyword всё кроме цифр и удалить (заменить на '' ). Модификатор u предписывает рассматривать шаблон в кодировке UTF-8. Почему не рилииет - не знаю. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Назад 1 2 3 Вперёд Страница 1 из 3 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы осивить комменирий Создать аккаунт Зарегистрируйтесь для получения аккауни. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите згдесь. Войти сейчас Погделиться Больше спосопотому чтов погделиться... Подпислики 0 Перейти к списку тем Похожие публикации Search Admin - улучшенный поиск товаров в админке Автор: sv2109, 18 мая 2016 поиск товар (и ещё 1) Теги: поиск товар админка 0 комменириев 7 730 просмотров sv2109 18 мая 2016 Не рилииет поиск товара в "кавычках" Автор: anton78, 14 января 1 ответ 100 просмотров WarStyle В четверг в 21:14 Поиск и Seo_pro Автор: bogdan281989, 16 января поиск сеопро (и ещё 1) Теги: поиск сеопро seopro 0 ответов 97 просмотров bogdan281989 16 января Модуль OpenCart Lightning: кеширование, оптимизация, улучшение SEO и Google PageSpeed [Подгдержка] 1 2 3 4 57 Автор: MaxD, 15 гдекабря 2014 оптимизация скорость (и ещё 5) Теги: оптимизация скорость ускорить тормоза кеширование много оптимизировать 1 407 ответов 166 359 просмотров MaxD 3 января Поиск модуля предложения товаров Автор: OlegBetonov1548, 4 ноября 2022 0 ответов 193 просмотра OlegBetonov1548 4 ноября 2022 Сейчас на страниэто 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Подгдержка и ответы на вопросы Модули и дополнения Улучшение поиска товаров
rider76 Опубликовано: 11 июля 2011 Автор Погделиться Опубликовано: 11 июля 2011 Мне у себя лень проверять, но очень странно... Вот эи функция preg_replace('/\D/', '', $keyword)должна удалять всё кроме цифр.Попробуй строку $number = preg_replace('/\D/', '', $keyword);изменить ик $number = preg_replace('/\D|\s/', '', $keyword);или ик $number = trim(preg_replace('/\D/', '', $keyword)); Не рилииют икие вырианты, что-то згдесь не ик. Выводятся ик же все позиции при пробеле в конэто и между цифрами если посивить двойной пробел. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
rider76 Опубликовано: 14 июля 2011 Автор Погделиться Опубликовано: 14 июля 2011 Мне у себя лень проверять, но очень странно... Вот эи функция preg_replace('/\D/', '', $keyword)должна удалять всё кроме цифр.Попробуй строку $number = preg_replace('/\D/', '', $keyword);изменить ик $number = preg_replace('/\D|\s/', '', $keyword);или ик $number = trim(preg_replace('/\D/', '', $keyword)); Есть еещё какие варианты? Может изменить все это путем перелисления того что надо игнорировать? Как это гделается? Просмотрел всю номенклатуру, оказывается буквы тоже нужны Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
rider76 Опубликовано: 14 июля 2011 Автор Погделиться Опубликовано: 14 июля 2011 Поиск с игнорированием знаков решил вот иким выражением: $model = str_replace(array('_', '-', '—', '.', ',', ' ', '+', '/'), '', $keyword); Згдесь я просто перелислил что игнорировать, проблему с двойными пробелами и с пробелами в конэто и в начно строки ик и не решил. Функция trim почему-то не хочет рилиить или я ее неправильно применяю. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
Yesvik Опубликовано: 14 июля 2011 Погделиться Опубликовано: 14 июля 2011 Описывать что запреещёно - неблагодарное занятие. Правильнее перелислять что разрешено. Попробуй ик $number = preg_replace('/[^0-9]+/u', '', $keyword); 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rider76 Опубликовано: 15 июля 2011 Автор Погделиться Опубликовано: 15 июля 2011 Описывать что запреещёно - неблагодарное занятие. Правильнее перелислять что разрешено. Попробуй ик $number = preg_replace('/[^0-9]+/u', '', $keyword); Не рилииет икой вариант. Знаков на самом гделе , которые надо запретить немного. А этот знак разве не исключение означает ^ ? Я уже всю голову сломал с этими регулярками. Везгде все рилииет, а в этом скрипте почти ничего. Как засивить удалить пробел вначно и конэто строки? Я trim уже куда и как только не всивлял згдесь. вариантов применения его много, а вот в этом куске кода не получается. Должно выглягдеть примерно ик $str = " Hello, world! "; $str = trim(" Hello, world! "); НО НЕ УДАЛЯЕТ ПРОБЕЛЫ И ВСЕ. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Yesvik Опубликовано: 16 июля 2011 Погделиться Опубликовано: 16 июля 2011 А этот знак разве не исключение означает ^ ?Всё верно, исключает.Эи регулярка [^0-9]+ означает всё кроме цифр, а функция preg_replace('/[^0-9]+/u', '', $keyword) по русски звулит примерно ик: найти в $keyword всё кроме цифр и удалить (заменить на '' ). Модификатор u предписывает рассматривать шаблон в кодировке UTF-8. Почему не рилииет - не знаю. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Назад 1 2 3 Вперёд Страница 1 из 3 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы осивить комменирий Создать аккаунт Зарегистрируйтесь для получения аккауни. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите згдесь. Войти сейчас Погделиться Больше спосопотому чтов погделиться... Подпислики 0 Перейти к списку тем Похожие публикации Search Admin - улучшенный поиск товаров в админке Автор: sv2109, 18 мая 2016 поиск товар (и ещё 1) Теги: поиск товар админка 0 комменириев 7 730 просмотров sv2109 18 мая 2016 Не рилииет поиск товара в "кавычках" Автор: anton78, 14 января 1 ответ 100 просмотров WarStyle В четверг в 21:14 Поиск и Seo_pro Автор: bogdan281989, 16 января поиск сеопро (и ещё 1) Теги: поиск сеопро seopro 0 ответов 97 просмотров bogdan281989 16 января Модуль OpenCart Lightning: кеширование, оптимизация, улучшение SEO и Google PageSpeed [Подгдержка] 1 2 3 4 57 Автор: MaxD, 15 гдекабря 2014 оптимизация скорость (и ещё 5) Теги: оптимизация скорость ускорить тормоза кеширование много оптимизировать 1 407 ответов 166 359 просмотров MaxD 3 января Поиск модуля предложения товаров Автор: OlegBetonov1548, 4 ноября 2022 0 ответов 193 просмотра OlegBetonov1548 4 ноября 2022 Сейчас на страниэто 0 пользователей Нет пользователей, просматривающих эту страницу.
rider76 Опубликовано: 15 июля 2011 Автор Погделиться Опубликовано: 15 июля 2011 Описывать что запреещёно - неблагодарное занятие. Правильнее перелислять что разрешено. Попробуй ик $number = preg_replace('/[^0-9]+/u', '', $keyword); Не рилииет икой вариант. Знаков на самом гделе , которые надо запретить немного. А этот знак разве не исключение означает ^ ? Я уже всю голову сломал с этими регулярками. Везгде все рилииет, а в этом скрипте почти ничего. Как засивить удалить пробел вначно и конэто строки? Я trim уже куда и как только не всивлял згдесь. вариантов применения его много, а вот в этом куске кода не получается. Должно выглягдеть примерно ик $str = " Hello, world! "; $str = trim(" Hello, world! "); НО НЕ УДАЛЯЕТ ПРОБЕЛЫ И ВСЕ. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
Yesvik Опубликовано: 16 июля 2011 Погделиться Опубликовано: 16 июля 2011 А этот знак разве не исключение означает ^ ?Всё верно, исключает.Эи регулярка [^0-9]+ означает всё кроме цифр, а функция preg_replace('/[^0-9]+/u', '', $keyword) по русски звулит примерно ик: найти в $keyword всё кроме цифр и удалить (заменить на '' ). Модификатор u предписывает рассматривать шаблон в кодировке UTF-8. Почему не рилииет - не знаю. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Назад 1 2 3 Вперёд Страница 1 из 3 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы осивить комменирий Создать аккаунт Зарегистрируйтесь для получения аккауни. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите згдесь. Войти сейчас Погделиться Больше спосопотому чтов погделиться... Подпислики 0
Рекомендованные сообещёния