Помощь Opencart не работает поиск

Apppxu

Постоялец
Регистрация
2 Апр 2013
Сообщения
84
Реакции
6
Opencart 1.5.5.1
Аджакс поиск работает нормально, но при нажатии энтера и попытки перехода на обычный поиск белый экран, ниже код ошибки который прячется под белым экраном
Код:
http://dvernikshop.ru
Код:
Notice: Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OR LCASE(p.model) = 'фывфывфы' OR LCASE(p.sku) = 'фывфывфы' OR L' at line 2
Error No: 1064
SELECT DISTINCT SQL_CALC_FOUND_ROWS p.product_id, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2017-11-16 19:23:00') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '2017-11-16 19:23:00')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '2017-11-16 19:23:00') AND (ps.date_end = '0000-00-00' OR ps.date_end > '2017-11-16 19:23:00')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2017-11-16 19:23:00' AND p2s.store_id = '0' AND ( LCASE(p.model) = 'фывфывфы' OR p.product_id IN ( SELECT RO.product_id FROM oc_relatedoptions RO where LCASE(RO.model) = 'фывфывфы' ) OR pd.name LIKE '%фывфывфы%' OR OR LCASE(p.model) = 'фывфывфы' OR LCASE(p.sku) = 'фывфывфы' OR LCASE(p.upc) = 'фывфывфы' OR LCASE(p.ean) = 'фывфывфы' OR LCASE(p.jan) = 'фывфывфы' OR LCASE(p.isbn) = 'фывфывфы' OR LCASE(p.mpn) = 'фывфывфы') GROUP BY p.product_id ORDER BY p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,20 in /home/klen/dvernikshop.ru/www/system/database/mysqliz.php on line 53
 
Ошибка здесь:
-------------------------------------------------------------------
WHERE pd.language_id = '1'
AND p.status = '1'
AND p.date_available <= '2017-11-16 19:23:00'
AND p2s.store_id = '0'
AND (LCASE(p.model) = 'фывфывфы'
OR p.product_id IN
(SELECT RO.product_id
FROM oc_relatedoptions RO
WHERE LCASE(RO.model) = 'фывфывфы' )
OR pd.name LIKE '%фывфывфы%'
OR
OR LCASE(p.model) = 'фывфывфы'
OR LCASE(p.sku) = 'фывфывфы'
OR LCASE(p.upc) = 'фывфывфы'
OR LCASE(p.ean) = 'фывфывфы'
OR LCASE(p.jan) = 'фывфывфы'
OR LCASE(p.isbn) = 'фывфывфы'
OR LCASE(p.mpn) = 'фывфывфы')
GROUP BY p.product_id
ORDER BY p.sort_order ASC,
LCASE(pd.name) ASC
LIMIT 0, 20
-------------------------------------------------------------------

Нужно смотреть модифицированные файлы catalog\model\catalog\product.php и catalog\controller\product\search.php
Потому что OR добавляется только при поиске с filter_tag которого в запросе не видно. А условие выше указывает на модификацию этого файла модулем добавившим свое условие фильтрации.
 
файлы в приложени
 

Вложения

  • search.zip
    6,9 KB · Просмотры: 16
Перед комментированием кода нужно хорошо его изучить.
У вас так:
Код:
              if (!empty($data['filter_name']) && !empty($data['filter_tag'])) {
                 $sql .= " OR ";
              }

//            if (!empty($data['filter_tag'])) {
//                $sql .= "pd.tag LIKE '%" . $this->db->escape($data['filter_tag']) . "%'";
//            }
А должно быть так:
Код:
//            if (!empty($data['filter_name']) && !empty($data['filter_tag'])) {
//                $sql .= " OR ";
//            }

//            if (!empty($data['filter_tag'])) {
//                $sql .= "pd.tag LIKE '%" . $this->db->escape($data['filter_tag']) . "%'";
//            }
 
Назад
Сверху