Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 115 Ответов
  • 4665 Просмотров
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Доброго времени суток!

Прошу Вашей помощи в запросе в БД модуля SP Simple Portfolio

И так, что я сделал:
1. Внес модификацию в XML файл mod_spsimpleportfolio.xml
Код
33 <field name="category_id" type="category" extension="com_spsimpleportfolio" default="" label="MOD_SPSIMPLEPORTFOLIO_CATEGORY" description="MOD_SPSIMPLEPORTFOLIO_CATEGORY">
34 <option value="">MOD_SPSIMPLEPORTFOLIO_CATEGORY_ALL</option>
35 </field>
на
Код
33 <field name="category_id" type="sql" default="" extension="com_spsimpleportfolio" multiple="multiple" class="input-xxlarge" query="SELECT id, title FROM #__spsimpleportfolio_tags ORDER BY title ASC" key_field="id" value_field="title" label="MOD_SPSIMPLEPORTFOLIO_CATEGORY" description="MOD_SPSIMPLEPORTFOLIO_CATEGORY" />
2. После, нашел в файле helper.php по адресу modules/mod_spsimpleportfolio обработчик
Код
22 //has category
23 if ($params->get('category_id') != '') {
24 $query->where($db->qn('a.catid')." = ".$db->quote( $params->get('category_id') ));
25 }
который подкорректировал на
Код
22 //has category
23 if ($params->get('category_id') != '') {
24 $query->where($db->qn('a.tagids')." = ".$db->quote( $params->get('category_id') ));
25 }

Теперь выскакивает ошибка 1054 - Ошибка 1054  >:(

Полез в БД и посмотрел, что в таблице _modules столбец module > mod_spsimpleportfolio имеет следующую запись в столбце params
Код
{"show_filter":"0","category_id":["10","6","7","9"],"layout_type":"gallery_space","columns":"3","thumbnail_type":"rectangular","limit":"6","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}
Значения category_id сравнил с с теми, что находятся в таблице _spsimpleportfolio_tags все сходится!

При проверке элементов записей из таблицы _spsimpleportfolio_items в столбце tagids все они в отличии от catid окружены квадратными скобками и в кавычках ( ["10"] ). Смотрите скрин.


Я так понимаю, что я что-то недописал и обработчик не корректно считывает значения.
Помогите, кто сталкивался?
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Правильность синтаксиса запроса
« Ответ #1 : 29.08.2017, 12:01:10 »
В переменной category_id содержится массив. Переведи его в строку с помощью implode и в запросе используй in вместо =
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #2 : 29.08.2017, 12:26:09 »
В переменной category_id содержится массив. Переведи его в строку с помощью implode и в запросе используй in вместо =
ага. Если не трудно, можете пример написать, как оно должно выглядеть
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Правильность синтаксиса запроса
« Ответ #3 : 29.08.2017, 12:36:36 »
Код: php
<?php $query->where('a.catid IN('.implode(',', $params->get('category_id')).')'); ?>
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #4 : 29.08.2017, 13:41:32 »
$query->where('a.catid IN('.implode(',', $params->get('category_id')).')');

Не работает... и запросу выглядит не стандартно

вот исходный
Код
$query->where($db->qn('a.tagids')." = ".$db->quote( $params->get('category_id') ));
Логика в нем работает по принципу сравнения и поиска значений в БД с выбранным в модулей

Ваш вариант
Код
$query->where('a.catid IN('.implode(',', $params->get('category_id')).')');
Логика тут считывает в разбиении и все. нету сравнения + нету подключения к БД для выборки параметров модуля.
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Правильность синтаксиса запроса
« Ответ #5 : 29.08.2017, 13:50:01 »
Не работает... и запросу выглядит не стандартно

вот исходный
Код
$query->where($db->qn('a.tagids')." = ".$db->quote( $params->get('category_id') ));
Логика в нем работает по принципу сравнения и поиска значений в БД с выбранным в модулей

Ваш вариант
Код
$query->where('a.catid IN('.implode(',', $params->get('category_id')).')');
Логика тут считывает в разбиении и все. нету сравнения + нету подключения к БД для выборки параметров модуля.


Вообще не понял что ты написал!
Я думаю что ты додумался что надо изменить a.catid на a.tagids ?
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Правильность синтаксиса запроса
« Ответ #6 : 29.08.2017, 13:51:37 »
Код
<field name="category_id" type="sql" default="" extension="com_spsimpleportfolio" multiple="multiple" class="input-xxlarge" query="SELECT id, title FROM #__spsimpleportfolio_tags ORDER BY title ASC" key_field="id" value_field="title" label="MOD_SPSIMPLEPORTFOLIO_CATEGORY" description="MOD_SPSIMPLEPORTFOLIO_CATEGORY" />

А кто так вообще делает? Даже ужасно выглядит....
А что выводится в этом поле?
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #7 : 29.08.2017, 13:56:12 »
Я думаю что ты додумался что надо изменить a.catid на a.tagids ?
)) конечно додумался, но по факту не отрабатывает.

А кто так вообще делает? Даже ужасно выглядит....
А что выводится в этом поле?

Ранее, была выборка Категории, а хочу сделать выборку Тегов(меток)
Я внес модификацию, в начале топика смотри.

*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Правильность синтаксиса запроса
« Ответ #8 : 29.08.2017, 14:00:20 »
Работал когда-нибудь с JForm ?
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #9 : 29.08.2017, 14:05:15 »
Работал когда-нибудь с JForm ?
Нет.
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Правильность синтаксиса запроса
« Ответ #10 : 29.08.2017, 14:10:27 »
Файл который в архиве распакуй в JPATH_ROOT/libraries/joomla/form/fields

Код ниже добавь в XML файл модуля
Код: xml
<field name="spsimpleportfolio_tags" type="spsimpleportfoliotags" label="MOD_SPSIMPLEPORTFOLIO_CATEGORY" description="MOD_SPSIMPLEPORTFOLIO_CATEGORY"><option value="">MOD_SPSIMPLEPORTFOLIO_CATEGORY_ALL</option></field>
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Re: Правильность синтаксиса запроса
« Ответ #11 : 29.08.2017, 14:33:58 »
При проверке элементов записей из таблицы _spsimpleportfolio_items в столбце tagids все они в отличии от catid окружены квадратными скобками и в кавычках ( ["10"] ). Смотрите скрин.
видимо потому что там данные записаны в json и и их может быть несколько т.е. ["10", "11", "12"] ну и т.д.
следовательно этот запрос
$query->where($db->qn('a.tagids')." = ".$db->quote( $params->get('category_id') ));
работать не будет)
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #12 : 29.08.2017, 14:54:17 »
<field name="spsimpleportfolio_tags" type="spsimpleportfoliotags" label="MOD_SPSIMPLEPORTFOLIO_CATEGORY" description="MOD_SPSIMPLEPORTFOLIO_CATEGORY"><option value="">MOD_SPSIMPLEPORTFOLIO_CATEGORY_ALL</option></field>
Сделал
В настройках модуля ошибка
Notice: Undefined variable: item in /var/www/site.com/libraries/joomla/form/fields/spsimpleportfoliotags.php on line 23
Notice: Trying to get property of non-object in /var/www/h4262/data/www/site.com/libraries/joomla/form/fields/spsimpleportfoliotags.php on line 23
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Правильность синтаксиса запроса
« Ответ #13 : 29.08.2017, 15:03:01 »
Сделал
В настройках модуля ошибка
Notice: Undefined variable: item in /var/www/site.com/libraries/joomla/form/fields/spsimpleportfoliotags.php on line 23
Notice: Trying to get property of non-object in /var/www/h4262/data/www/site.com/libraries/joomla/form/fields/spsimpleportfoliotags.php on line 23


Ну да, недосмотрел....
В 23 строке замени два раза $item на $tag


Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #14 : 29.08.2017, 15:09:40 »
$tag
Перестало ругаться, выбрал категорию, но ничего не выбирает из нее. Игнорит...
Все подряд вытягивает...
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Правильность синтаксиса запроса
« Ответ #15 : 29.08.2017, 15:18:39 »
Перестало ругаться, выбрал категорию, но ничего не выбирает из нее. Игнорит...
Все подряд вытягивает...

Я делал пример согласно sql запросы который ты указывал в XML файле....
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #16 : 29.08.2017, 15:59:56 »
Я делал пример согласно sql запросы который ты указывал в XML файле....
Ага
Так правильно, я же в файле helper.php ничего не корректировал, все по старинке. Потому и не вытягивает.
Вышеуказанный код заработает с учетом последнего подхода?
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Правильность синтаксиса запроса
« Ответ #17 : 29.08.2017, 16:04:49 »
покажи файл helper.php
и что там надо сделать...
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #18 : 29.08.2017, 16:10:30 »
покажи файл helper.php
и что там надо сделать...
Не могу найти "Прикрепить файл"...
https://drive.google.com/open?id=0BxNnixNyYN0jVFdnS3owSWpJdEU
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Правильность синтаксиса запроса
« Ответ #19 : 29.08.2017, 16:15:04 »
В файле проверь выводится ли то что ты выбрал в настойках модуля!
Код: php
<?php print_r($params->get('spsimpleportfolio_tags')); ?>
Это должен быть массив, если выбрал несколько вариантов...
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #20 : 29.08.2017, 16:25:38 »
<?php print_r($params->get('spsimpleportfolio_tags')); ?>
Да, выводится идентификатор
Array ([0] => 9 )
Если несколько вариантов, то в таком виде
Array ([0]=> 10 [1] => 6 [2] => 9 )
« Последнее редактирование: 29.08.2017, 16:29:46 от PRammer »
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Правильность синтаксиса запроса
« Ответ #21 : 29.08.2017, 16:31:46 »
тогда объясни мне почему мой вариант не будет работать
Код: php
<?php $query->where('a.tagids IN('.implode(',', $params->get('category_id')).')'); ?>
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #22 : 29.08.2017, 16:45:59 »
<?php $query->where('a.tagids IN('.implode(',', $params->get('category_id')).')'); ?>
Сперва вставлял так
Код
if ($params->get('category_id')!= '') {
$query->where('a.tagids IN('.implode(',', $params->get('category_id')).')');
}
Ничего не срабатывало
Удалил все, что вверху и вставил так, как написал
Код
<?php $query->where('a.tagids IN('.implode(',', $params->get('category_id')).')'); ?>
1064 - Ошибка: 1064
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Правильность синтаксиса запроса
« Ответ #23 : 29.08.2017, 16:49:25 »
Мне это ни о чем не говорит, надо сам текст ошибки, а не ее номер...
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #24 : 29.08.2017, 16:53:46 »
<?php $query->where('a.tagids IN('.implode(',', $params->get('category_id')).')'); ?>
Включил Сообщения об ошибках: Для разработчиков (все ошибки PHP) ничего больше не выдает.
Как можно посмотреть?
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Правильность синтаксиса запроса
« Ответ #25 : 29.08.2017, 16:55:32 »
Если не дай бог ошибка в SQL запросе, то выводится код ошибки и сам запрос где возникла ошибка....
Сделай скин страницы с ошибкой...
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #26 : 29.08.2017, 16:59:13 »
Если не дай бог ошибка в SQL запросе, то выводится код ошибки и сам запрос где возникла ошибка....
Сделай скин страницы с ошибкой...
))) там ничего нет, ни строки предупреждения...
http://i.piccy.info/i9/72fb875901f34213a9d1f4d604ffd3f3/1504015108/535059/1175117/1.jpg
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #27 : 29.08.2017, 17:02:06 »
Такс...
Еще раз внимательно прочитал и внес корректировки
Код
$query->where('a.tagids IN('.implode(',', $params->get('category_id')).')');
на
Код
$query->where('a.tagids IN('.implode(',', $params->get('spsimpleportfolio_tags')).')');
Аналогично 1064
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Правильность синтаксиса запроса
« Ответ #28 : 29.08.2017, 17:05:41 »
закомментируй
Код: php
<?php $items = $db->loadObjectList(); ?>

и перед этим напиши
Код: php
<?php echo (string)$query; ?>

Что выводит? (должен быть sql запрос, пришли его)
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #29 : 29.08.2017, 17:15:23 »
Что выводит? (должен быть sql запрос, пришли его)
Какой-то ерунда...
Все делал в файле helper.php
1) Сделал, все как сказал, ошибка 1064 (вместе с условием $query->where('a.tagids IN('.implode(',', $params->get('spsimpleportfolio_tags')).')');)
2) убрал условия, закомментировал $items = $db->loadObjectList(); оставил только echo (string)$query; - 1064
3) убрал условия, оставил $items = $db->loadObjectList(); и добавил echo (string)$query;, на выходе

Код
SELECT a.*, a.id AS spsimpleportfolio_item_id , a.tagids AS spsimpleportfolio_tag_id, a.created AS created_on
FROM `#__spsimpleportfolio_items` AS `a`
WHERE `a`.`published` = 1 AND `a`.`access` IN (1,1,5)
ORDER BY `a`.`ordering` ASC LIMIT 6
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться