Новости Joomla

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

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Правильность синтаксиса запроса
« Ответ #90 : 30.08.2017, 17:50:02 »
А с этим com_spsimpleportfolio/models/items.php?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #91 : 30.08.2017, 17:55:54 »
А с этим com_spsimpleportfolio/models/items.php?
Неа...
Та же ошибка...
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Правильность синтаксиса запроса
« Ответ #92 : 30.08.2017, 18:02:39 »
Если этот вариант тоже не поможет, то не знаю, где еще искать.
« Последнее редактирование: 31.08.2017, 11:43:41 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #93 : 30.08.2017, 18:11:45 »
Если этот вариант тоже не поможет, то не знаю, где еще искать.

Как-то странно. Может я что-то забыл...
#1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ') ORDER BY id ASC' at line 3 SQL=SELECT `id`,`title`,`alias` FROM `#__spsimpleportfolio_tags` WHERE `id` IN () ORDER BY id ASC

1. Файл items.php в components/com_spsimpleportfolio/models заменил на ваш
2. Файл helper.php в modules/mod_spsimpleportfolio заменил на ваш
3. Файл mod_spsimpleportfolio.php в modules/mod_spsimpleportfolio заменил на ваш
4. Правил mod_spsimpleportfolio.xml
на
Код
<field name="spsimpleportfolio_tags" type="spsimpleportfoliotags" label="MOD_SPSIMPLEPORTFOLIO_CATEGORY" multiple="multiple" class="input-xxlarge" description="MOD_SPSIMPLEPORTFOLIO_CATEGORY" />
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Правильность синтаксиса запроса
« Ответ #94 : 30.08.2017, 18:20:33 »
Черт, здесь еще: com_spsimpleportfolio/helpers/helper.php. Какое-то полное г..но, вы точно эти файлы не меняли?
« Последнее редактирование: 31.08.2017, 11:44:07 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
Re: Правильность синтаксиса запроса
« Ответ #95 : 30.08.2017, 21:47:33 »
Более менее прошелся внимательнее по теме. Может быть такое, что MariaDB не любит пробелы или кавычки не те?

Код: sql
$query->select($db->quoteName(array('id', 'title', 'alias')));
$query->from($db->quoteName('#__spsimpleportfolio_tags'));
$query->where($db->quoteName('id')." IN (" . $ids . ")");

$query->order('id ASC');

$db->setQuery($query);

Интересно, MySQL сгенерит эту ошибку. Я бы первым делом на нем проверил.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Правильность синтаксиса запроса
« Ответ #96 : 31.08.2017, 08:08:11 »
Зачем гадать? В тексте ошибки прямо указано, что это синтаксическая ошибка в IN() - он не должен быть пустым.
Прекляняюсь перед разработчиком этого чуда: соорудил запрос с IN без проверки наличия аргументов, модель и хелпер дублируют друг друга.
Думаю, что ошибка теперь вызывается уже не в модуле, а где-то в компоненте.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Правильность синтаксиса запроса
« Ответ #97 : 31.08.2017, 08:11:51 »
о, @capricorn , это тот запрос, на котором ошибка вываливается?

Может быть такое, что MariaDB не любит пробелы или кавычки не те?
откровенно говоря не думаю. там все одинаково в этом плане у mariadb с mysql. там отличия в другом, в оптимизации, и прочем.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
Re: Правильность синтаксиса запроса
« Ответ #98 : 31.08.2017, 09:23:23 »
Цитировать
Зачем гадать? В тексте ошибки прямо указано, что это синтаксическая ошибка в IN() - он не должен быть пустым
.

Это понятно. Ну и че дальше? Смешно конечно, но интересно. С чего оно пустое?
« Последнее редактирование: 31.08.2017, 09:33:11 от capricorn »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Правильность синтаксиса запроса
« Ответ #99 : 31.08.2017, 09:44:03 »
ну так надо смотреть с чего $ids пустое. mysql то че? ему что передали, он то и выполнил. ничего не передали - ничего не выполнил :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #100 : 31.08.2017, 10:44:41 »
#1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ') ORDER BY id ASC' at line 3 SQL=SELECT `id`,`title`,`alias` FROM `#__spsimpleportfolio_tags` WHERE `id` IN () ORDER BY id ASC

Даже вот так, для полноты картины
Код
$query->where('id IN111('.implode(',', array_filter($params->get('spsimpleportfolio_tags'))).')');
#1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'IN111(10,6,7) AND `a`.`access` IN (1,1,5) ORDER BY `a`.`ordering` ASC LIMIT 6' at line 3 SQL=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 id IN111(10,6,7) AND `a`.`access` IN (1,1,5) ORDER BY `a`.`ordering` ASC LIMIT 6

Ранее делали проверку и видно, что данные поступают... Это даже не затрагивали компонент. Кажется, мы не там копаем...
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Правильность синтаксиса запроса
« Ответ #101 : 31.08.2017, 10:53:19 »
это вы не там копаете. и никакую вы проверку данных не делаете. потому что вы опять показывает ту ошибку которая к запросу не имеет никакого отношения. сколько раз надо сказать, что в ошибке у вас
Цитировать
WHERE `id` IN ()
а затем вы показываете совсем другое
Цитировать
`a`.`published` = 1 AND id IN111(10,6,7)
что мне надо еще сказать, как вам это объяснить? :) вы показываете формирование запроса одно, а ошибку совсем по другому запросу.

и прекратите делать наконец то "Даже вот так, для полноты картины" :) вы ничего так не отлаживате, а только путаете и себя и нас.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Правильность синтаксиса запроса
« Ответ #102 : 31.08.2017, 10:59:00 »
@capricorn ранее показал код, который очень похож на тот, который нужен. где он находится? смотрите там, почему $ids пуст.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
Re: Правильность синтаксиса запроса
« Ответ #103 : 31.08.2017, 11:47:10 »
Белый песец. ТС - дамп выложите, раз до такого дошло. придется подошвы стирать для проверки.

dmitry_stas - надо проверить. не будьте самоуверенным. всякое бывает.
« Последнее редактирование: 31.08.2017, 11:53:09 от capricorn »
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Правильность синтаксиса запроса
« Ответ #104 : 31.08.2017, 11:51:59 »
В com_spsimpleportfolio/models/items.php
Спойлер
[свернуть]
В com_spsimpleportfolio/helpers/helper.php
Спойлер
[свернуть]
Но почему-то ошибка все равно вылезает, вот и подумал, что в других файлах компонента то же самое.
P.S. Последние вложения обновил.
« Последнее редактирование: 31.08.2017, 11:56:44 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
Re: Правильность синтаксиса запроса
« Ответ #105 : 31.08.2017, 11:54:56 »
ТС- Дамп таблиц выложи

del.
« Последнее редактирование: 31.08.2017, 12:55:55 от capricorn »
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Правильность синтаксиса запроса
« Ответ #106 : 31.08.2017, 12:10:07 »
capricorn, соблюдайте приличие, мы с вами на брудершафт не пили. И засуньте себе в одно место ваши неумелые советы, а также неуместные нотации.
Никакого дампа у меня нет, понятно? И у меня никакой 1064 запрос никуда не идет.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
Re: Правильность синтаксиса запроса
« Ответ #107 : 31.08.2017, 12:53:52 »
Извините, не хотел вас обидеть. На ты обратился по привычке общения с коллегами. Где не важно вы-ты.

Мне вообще как-то, все равно. Я могу разобраться в этом вопросе при желании. Просто вы приводите код из нескольких строк, и сами не можете понять в чем дело. Зачем тогда советы даете.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Правильность синтаксиса запроса
« Ответ #108 : 31.08.2017, 13:05:43 »
capricorn, это вы не понимаете, в чем дело, горя при этом желанием давать советы.
Из того, что дал ТС, я исправил все, что могло вызвать приведенную ошибку. Чтобы ее устранить, нужно иметь доступ к остальным файлам, связанным с не, а вообще - к сайту целиком. У меня нет никакого желания этого делать, вот я и выложил старый и и исправленный варианты кода, чтобы ТС имел представление,что искать у себя.
Теперь вам все понятно? Если у вас есть желание и время помочь ТС, вперед, кто вам мешает?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Правильность синтаксиса запроса
« Ответ #109 : 31.08.2017, 13:08:04 »
dmitry_stas - надо проверить. не будьте самоуверенным. всякое бывает.
так а что проверять то? вы ж сами показали код где формируется запрос. и он ну прям очень похож на тот, по которому ошибка. и если это и правда он, то 99% что в нем просто $ids пустой. не могу понять почему ТС его найти не может. там проблемы на пол секунды.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #110 : 03.09.2017, 16:51:36 »
так а что проверять то? вы ж сами показали код где формируется запрос. и он ну прям очень похож на тот, по которому ошибка. и если это и правда он, то 99% что в нем просто $ids пустой. не могу понять почему ТС его найти не может. там проблемы на пол секунды.
Дратуте))

Проверил и оказалось, что SQL выборка, которая находится в файле helper.php по адресу components/com_spsimpleportfolio/helpers вообще не участвует в работе. Где-то в другом месте все... Копаюсь!
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #111 : 03.09.2017, 17:08:41 »
Ага...
Тут задействования items.php по адресу components/com_spsimpleportfolio/models
Вот отрезок кода
Код
public function getItemTags($ids, $array = false) {
$db = JFactory::getDbo();
$query = $db->getQuery(true);

if(!is_array($ids)) {
$ids = (array) json_decode($ids, true);
}

$ids = implode(',', $ids);
$query->select($db->quoteName(array('id', 'title', 'alias')));
$query->from($db->quoteName('#__spsimpleportfolio_tags'));
$query->where($db->quoteName('id')." IN (" . $ids . ")");
$query->order('id ASC');
$db->setQuery($query);

$items = $db->loadObjectList();

if($array == true) {
$tags = array();
foreach ($items as $item) {
$tags[] = $item->title;
}
return $tags;
} else {
return $items;
}

return array();
}

Переменную берет
Вот ошибка на данном участке
Код
[i]#1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'IN_TEST (8) ORDER BY id ASC' at line 3 SQL=SELECT `id`,`title`,`alias` FROM `#__spsimpleportfolio_tags` WHERE `id` IN_TEST (8) ORDER BY id ASC[/i]
7-е пекло... Почему оно не работает тогда, если данные заходят?
« Последнее редактирование: 03.09.2017, 17:32:02 от PRammer »
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #112 : 03.09.2017, 17:31:25 »
Теряются данные, со стороны модуля, когда тот, передает в компонент в SQL запросов для соответствующей выборки...

Вероятнее всего, проблема связана с дописанным кодом от robert в файле mod_spsimpleportfolio.php по адресу modules/mod_spsimpleportfolio

Оригинал
Код
<?php
/**
 * @package     SP Simple Portfolio
 * @subpackage  mod_spsimpleportfolio
 *
 * [member=126442]copyright[/member]   Copyright (C) 2010 - 2017 JoomShaper. All rights reserved.
 * @license     GNU General Public License version 2 or later.
 */

defined('_JEXEC') or die;

require_once __DIR__ . '/helper.php';

JHtml::_('jquery.framework');
jimport('joomla.application.component.model');
JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_spsimpleportfolio/models');
require_once JPATH_BASE . '/components/com_spsimpleportfolio/helpers/helper.php';

$doc = JFactory::getDocument();
$doc->addStylesheet( JURI::root(true). '/components/com_spsimpleportfolio/assets/css/featherlight.min.css' );
$doc->addStylesheet( JURI::root(true). '/components/com_spsimpleportfolio/assets/css/spsimpleportfolio.css' );
$doc->addScript( JURI::root(true). '/components/com_spsimpleportfolio/assets/js/jquery.shuffle.modernizr.min.js' );
$doc->addScript( JURI::root(true). '/components/com_spsimpleportfolio/assets/js/featherlight.min.js' );
$doc->addScript( JURI::root(true). '/components/com_spsimpleportfolio/assets/js/spsimpleportfolio.js' );

$items = ModSpsimpleportfolioHelper::getItems($params);
$model = JModelLegacy::getInstance('Items', 'SpsimpleportfolioModel');
$tagList = $model->getTagList($items);

$moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx'));

require JModuleHelper::getLayoutPath('mod_spsimpleportfolio', $params->get('layout', 'default'));
Текущая версия
Код
<?php
/**
 * @package     SP Simple Portfolio
 * @subpackage  mod_spsimpleportfolio
 *
 * [member=126442]copyright[/member]   Copyright (C) 2010 - 2017 JoomShaper. All rights reserved.
 * @license     GNU General Public License version 2 or later.
 */

defined('_JEXEC') or die;

require_once __DIR__ . '/helper.php';

JHtml::_('jquery.framework');
jimport('joomla.application.component.model');
JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_spsimpleportfolio/models');
require_once JPATH_BASE . '/components/com_spsimpleportfolio/helpers/helper.php';

$doc = JFactory::getDocument();
$doc->addStylesheet( JURI::root(true). '/components/com_spsimpleportfolio/assets/css/featherlight.min.css' );
$doc->addStylesheet( JURI::root(true). '/components/com_spsimpleportfolio/assets/css/spsimpleportfolio.css' );
$doc->addScript( JURI::root(true). '/components/com_spsimpleportfolio/assets/js/jquery.shuffle.modernizr.min.js' );
$doc->addScript( JURI::root(true). '/components/com_spsimpleportfolio/assets/js/featherlight.min.js' );
$doc->addScript( JURI::root(true). '/components/com_spsimpleportfolio/assets/js/spsimpleportfolio.js' );

$items = ModSpsimpleportfolioHelper::getItems($params);
$model = JModelLegacy::getInstance('Items', 'SpsimpleportfolioModel');

$tagged_items = array();

foreach ($items as $item) {
$item->tagids = json_decode($item->tagids);

if (!empty($item->tagids)) {
$tagged_items[] = $item;
}
}

if (!empty($tagged_items)) {
$tagList = $model->getTagList($tagged_items);
}

$moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx'));

require JModuleHelper::getLayoutPath('mod_spsimpleportfolio', $params->get('layout', 'default'));

Смущает меня замена $tagList = $model->getTagList($items); ....

Как вы считаете?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Правильность синтаксиса запроса
« Ответ #113 : 03.09.2017, 22:05:43 »
Да, мой косяк: забыл добавить строку $tagList = array();.
У вас есть 2 варианта решения:
1. В modules/mod_spsimpleportfolio/mod_spsimpleportfolio.php замените
Код
$tagList = $model->getTagList($items);
на
Код
$tagged_items = array();
$tagList = array();

foreach ($items as $item) {
$item->tagids = json_decode($item->tagids);

if (!empty($item->tagids)) {
$tagged_items[] = $item;
}
}

if (!empty($tagged_items)) {
$tagList = $model->getTagList($tagged_items);
}

2. Возьмите измененный код функции getItemTags() отсюда и используйте неправленные мной modules/mod_spsimpleportfolio/mod_spsimpleportfolio.php и modules/mod_spsimpleportfolio/helper.php.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #114 : 07.09.2017, 14:15:00 »
Да, мой косяк: забыл добавить строку $tagList = array();.
У вас есть 2 варианта решения:
1. В modules/mod_spsimpleportfolio/mod_spsimpleportfolio.php замените
Код
$tagList = $model->getTagList($items);
на
Код
$tagged_items = array();
$tagList = array();

foreach ($items as $item) {
$item->tagids = json_decode($item->tagids);

if (!empty($item->tagids)) {
$tagged_items[] = $item;
}
}

if (!empty($tagged_items)) {
$tagList = $model->getTagList($tagged_items);
}

2. Возьмите измененный код функции getItemTags() отсюда и используйте неправленные мной modules/mod_spsimpleportfolio/mod_spsimpleportfolio.php и modules/mod_spsimpleportfolio/helper.php.

))) Что самое интересное, я просто вернул оригинальный файл mod_spsimpleportfolio.php и все заработало

Работает!  ;D 8)
« Последнее редактирование: 07.09.2017, 14:31:47 от PRammer »
*

ghibon

  • Захожу иногда
  • 61
  • 4 / 0
Re: Правильность синтаксиса запроса
« Ответ #115 : 23.11.2018, 10:11:12 »
Только что столкнулся с этой ошибкой 1064 "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 ') ORDER BY id ASC' at line 3" при ссылке на категорию spsimpleportfolio, собственно потому и нашел эту тему в форуме. Победил ее сразу. Компонент не любит когда ссылаются на пустые данные, в моем случае это были пустые (еще не заполненные) категории. Как только одному из item присвоил нужную категорию, все заработало.
Может кому поможет в будущем
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться