Перейти к содержимому


Делаем поиск по коду товара ShopCMS


  • Вы не можете ответить в тему
Сообщений в теме: 11

#1 vsupport

    Продвинутый пользователь

  • Администраторы
  • 758 сообщений
Репутация: 31
Ассистент

Отправлено 14 March 2011 - 01:42 PM

Открываем фаил: /functions/product_functions.php

версия ShopCMS 3.1
Находим строку 907 и ниже вставляем:
"   LOWER(product_code) LIKE '%".xEscSQL(trim(strtolower($callBackParam["search_simple"][$n])))."%' OR ".
версия ShopCMS 3.0
Находим строку 922 и ниже вставляем:
"   LOWER(product_code) LIKE '%".strtolower($value)."%' OR ".

  • 0

#2 msidog

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 166 сообщений
Репутация: 42
Ассистент
  • ГородКривой Рог

Отправлено 30 September 2011 - 02:22 PM

если админ не возражает поправлю что для версии 3.0.2 ( у меня)
нужно вставлять код
" LOWER(product_code) LIKE '%".xEscSQL(trim(strtolower($callBackParam["search_simple"][$n])))."%' OR ".
в 907 строках
  • 0
Мой хостинг <<<invitehost.ru>>>
vsupport.club --Лучшее решение всех проблем ;)

#3 panv

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 33 сообщений
Репутация: 0
Начинающий

Отправлено 17 February 2012 - 07:40 AM

А если данный файл уже хорошо модифицирован, куда вставлять данный код?
  • 0

#4 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 17 February 2012 - 01:28 PM

А если данный файл уже хорошо модифицирован, куда вставлять данный код?

1. Взять не модифицированный из архива с начальной установкой, посмотреть там и найти аналогичное место в модифицированном. Обычно это не сложно, не настолько уж глубоки модификации в функциях.
2. Обратиться к тому, кто делал предыдущие модификации.
3. Обратиться к богу :).

---------- Сообщение объединено ----------

PS. Регулярно вижу при SQL-операторе LIKE приведение к одному регистру (lower, lowercase). Зачем? LIKE регистронезависим и сам все это делает. Даже с русскими буквами :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#5 panv

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 33 сообщений
Репутация: 0
Начинающий

Отправлено 17 February 2012 - 02:15 PM

Да, так и сделал. Хотя третий пункт мне явно по душе.
  • 0

#6 panv

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 33 сообщений
Репутация: 0
Начинающий

Отправлено 28 February 2012 - 11:11 AM

Есть вопрос, а как устроить поиск по коду товара productID?
" LOWER(productID) LIKE '%".xEscSQL(trim(strtolower($callBackParam["search_simple"][$n])))."%' OR ".
так не ищет
  • 0

#7 zrom

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 69 сообщений
Репутация: 16
Начинающий

Отправлено 28 February 2012 - 07:43 PM

Есть вопрос, а как устроить поиск по коду товара productID?
" LOWER(productID) LIKE '%".xEscSQL(trim(strtolower($callBackParam["search_simple"][$n])))."%' OR ".
так не ищет


надо продублировать 2 местах, у меня были строки 889 и 1172, ищите в этом диапазоне
должно работать
  • 0

#8 panv

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 33 сообщений
Репутация: 0
Начинающий

Отправлено 28 February 2012 - 08:15 PM

Да, верно, так и есть. Спасибо.
  • 0

#9 mx009

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 54 сообщений
Репутация: 0
Начинающий

Отправлено 03 March 2012 - 09:36 PM

Подскажите плиз как приладить модуль к 3.1.2 ??
  • 0

#10 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 02 February 2013 - 11:26 AM

PS. Регулярно вижу при SQL-операторе LIKE приведение к одному регистру (lower, lowercase). Зачем? LIKE регистронезависим и сам все это делает. Даже с русскими буквами :).

О! Я открыл для себя Америку, зачем надо ставить lowercase :).
LIKE вовсе не приводит строки сравнения к одному регистру.
Может, кому еще тоже будет полезно и интересно.
За сравнение строк в SQL через LIKE (да и вообще за сравнение и сортировку строк) отвечают настройки collation_*
Так вот если там стоит *_ci (например, cp1251_general_ci), то сравнение происходит регистронезависимо (по таблице веса символа?) и lowercase не нужен.
Если стоит *_bin, то сравнение происходит бинарно, по коду символа (т.е. регистрозависимо) и lowercase нужен.
Если стоит *_cs, то сравнение тоже происходит регистрозависимо, как и при *_bin, но некоторые буквы (Е и Ё, е и ё для русскоязычных таблиц) считаются одинаковыми при сравнении, а также правильно располагаются в алфавитной сортировке невзирая на то, что буквы Ёё стоят в самом конце кодовой таблицы.

Так что lowercase таки нужен, т.к. по умолчанию в MySQL стоит latin1_general_ci, но неизвестно, какая настройка будет на сервере хостера.
  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#11 hels

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 176 сообщений
Репутация: 3
Начинающий

Отправлено 12 February 2013 - 08:18 AM

эмм, а у меня и так можно искать по коду)))
  • 0

#12 Zextro

    Новичок

  • Пользователи
  • Pip
  • 6 сообщений
Репутация: 0
Начинающий

Отправлено 09 September 2013 - 04:16 AM

надо продублировать 2 местах, у меня были строки 889 и 1172, ищите в этом диапазоне должно работать


А после какого кода во втором случае вставлять? Не могу второе место найти.

первое, как я понял (907 строка)
$where_clause .= " ( LOWER(name) LIKE '%". xToText(trim(strtolower($callBackParam["search_simple"][$n])))."%' OR ".

А на 1120 строке уже и конец.
  • 0