Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Какая ошибка в MYSQL запросе при выполнении модуля Daily Views?

Какая ошибка в MYSQL запросе при выполнении модуля Daily Views?


     05.07.2020    Daily Views, MySQL, модуль    Общие вопросы по PHP, Модули    129

вопрос
Приветствую. Возникает ошибка при выполнения модуля Daily Views
Вот сам код


Данный код пишу в
engine/modules/functions.php

После


Собственно вот такая ошибка возникает при days_views=15

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 'v.news_id AND approve=1 ORDER BY SUM(p.views) DESC LIMIT 0,5' at line 1

И при days_views=30

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 'GROUP BY DAY v.news_id AND approve=1 ORDER BY SUM(v.views) DESC LIMIT 0,5' at line 1


Буду благодарен за любую помощь

Ответа пока нет


19 комментариев

dj-avtosh
PHP-developer

dj-avtosh - 5 июля 2020 11:59 -

GROUP BY DAY v.news_id


что за DAY?

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

morepol
Юзер

morepol - 5 июля 2020 12:38 -

Приветствую. Прошу прощения, не ту правку скинул, вот оригинал.



Ну и собственно Весь хак такой


Не нашел

Поэтому вставил после


morepol
Юзер

morepol - 5 июля 2020 12:46 -

Автор пишет, что при days_views=0 (данные меняются сразу, однако вообще ничего не выводит), хотя данные в таблицу dle_views_daily заполняются.

А при days_views=15 и days_views=16 ошибка

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 'DAY GROUP BY v.news_id ORDER BY SUM(v.views) DESC LIMIT 0,1' at line 1


При других значениях тоже пустой блок выводится

dj-avtosh
PHP-developer

dj-avtosh - 5 июля 2020 14:45 -

похоже не хватает где-то INTERVAL, распечатайте весь запрос, в котором ошибка.

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

morepol
Юзер

morepol - 5 июля 2020 16:23 -

dj-avtosh,
Если я правильно понимаю, то ошибка где-то в этом коде


if( preg_match( "#days_views=['\"](.+?)['\"]#i", $param_str, $match ) ) {
		$sql_select .= " LEFT JOIN " . PREFIX . "_views_daily v ON (p.id=v.news_id)";
		$views_day = date( "Y-m-d", $_TIME );
		$days = intval(trim($match[1]));
		if($days==15) {
			$day_s = date("Y-m-d", strtotime( "last Monday" )-60*60*24*6 );
			$day_e = date("Y-m-d", strtotime( "last Sunday" ) );
			$where[] = "v.date >= '{$day_s}' AND v.date <= '{$day_e}' DAY GROUP BY v.news_id";
		} elseif($days==16) {
			if(date("N")==1) $day_s = $views_day;
			else $day_s = date("Y-m-d", strtotime( "last Monday" ) );
			$where[] = "v.date >= '{$day_s}' GROUP BY v.news_id";
		} else {
//			$where[] = "v.date >= '{$views_day}' - INTERVAL {$days} DAY GROUP BY v.news_id";
			$where[] = "v.date = '{$views_day}' - INTERVAL {$days} DAY GROUP BY v.news_id";
		}
		$news_sort = "SUM(v.views)";
	}



Ну и собственно Весь хак такой

morepol
Юзер

morepol - 5 июля 2020 16:30 -

dj-avtosh,
Это при days_views=15

MySQL error in file: \engine\cache\system\plugins\6c0236393248b121ac132b4b4e4dw34.php at line 2001
Error Number: 1064
The Error returned was:
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 'DAY GROUP BY v.news_id AND approve=1 ORDER BY SUM(v.views) DESC LIMIT 0,5' at line 1
SQL query:

SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.selections, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM dle_post p INNER JOIN (SELECT DISTINCT(dle_post_extras_cats.news_id) FROM dle_post_extras_cats WHERE cat_id IN ('9')) c ON (p.id=c.news_id) LEFT JOIN dle_post_extras e ON (p.id=e.news_id) LEFT JOIN dle_views_daily v ON (p.id=v.news_id) WHERE v.date >= '2020-06-23' AND v.date <= '2020-06-28' DAY GROUP BY v.news_id AND approve=1 ORDER BY SUM(v.views) DESC LIMIT 0,5


6c0236393248b121ac132b4b4e4dw34.php это File: functions.php

at line 2001 $sql_result = $db->query( $sql_select );

И странная ерунда в таблице dle_views_daily 11 строк заполненых то есть 11 новостей, однако при

days_views=0 и тп сейчас не выводятся новости, проблема в $where[] = "v.date = '{$views_day}' - INTERVAL {$days} DAY GROUP BY v.news_id"; я так думаю.

Если эту строку удаляю , и раскоментарию ту строку, которую автор закоментировал , а именно "// $where[] = "v.date >= '{$views_day}' - INTERVAL {$days} DAY GROUP BY v.news_id";" то при days_views=0 или days_views=30 всегда одна новость и при days_views=0 новости не обновляются вообще, если первую строку оставить, то ничего не выводит, но в таблице все есть.

dj-avtosh
PHP-developer

dj-avtosh - 5 июля 2020 17:14 -

почему бы не написать напрямую автору данного хака?

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 5 июля 2020 17:15 -

DAY тут лишнее в запросе точно

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

morepol
Юзер

morepol - 5 июля 2020 18:00 -

Просто, последний ответ автора за 2013 год, и ответа на комментарии остальные так и не следовало, вот поэтому сужу,что работа над ним прекращена.

Убрал везде в запросах DAY, ошибка за days_views=15 пропала но, а вот days_views=0 или days_views=30 и тп
появилась


The Error returned was:
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 'GROUP BY v.news_id AND approve=1 AND p.date < '2020-07-05 17:57:50' ORDER BY SUM' at line 1
SQL query:

SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.selections, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM dle_post p INNER JOIN (SELECT DISTINCT(dle_post_extras_cats.news_id) FROM dle_post_extras_cats WHERE cat_id IN ('9')) c ON (p.id=c.news_id) LEFT JOIN dle_post_extras e ON (p.id=e.news_id) LEFT JOIN dle_views_daily v ON (p.id=v.news_id) WHERE v.date >= '2020-07-05' - INTERVAL 0 GROUP BY v.news_id AND approve=1 AND p.date < '2020-07-05 17:57:50' ORDER BY SUM(v.views) DESC LIMIT 0,5


и ошибка

The Error returned was:
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 'GROUP BY v.news_id AND approve=1 ORDER BY SUM(v.views) DESC LIMIT 0,5' at line 1

dj-avtosh
PHP-developer

dj-avtosh - 5 июля 2020 21:49 -

в GROUP BY не должен быть AND. Это правда так изначально было или вы костылите и сюда скидывете результат?

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

morepol
Юзер

morepol - 5 июля 2020 21:52 -

Только убрал DAY, может не правильно понял Вас.

Оригинал

dj-avtosh
PHP-developer

dj-avtosh - 5 июля 2020 21:58 -

GROUP BY v.news_id


перенесите и вставьте перед LIMIT

может и поможет

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

morepol
Юзер

morepol - 5 июля 2020 23:34 -

Понял Вас, спасибо за помощь, только скажите пожалуйста, а где перед LIMIT? Я просто не могу найти LIMIT в запросах хака? Или я неправильно понял?

dj-avtosh
PHP-developer

dj-avtosh - 5 июля 2020 23:36 -

выше в ваших запросах есть LIMIT, что у вас в движке - я не знаю

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

morepol
Юзер

morepol - 6 июля 2020 00:27 -

Спасибо за советы. Ну чтобы не плодил много тем, не подскажите
как в этом хаке


Сделать вывод не за один день, а за неделю или 7 дней (тут как проще будет, результат разный) но все же.

dj-avtosh
PHP-developer

dj-avtosh - 6 июля 2020 00:29 -

Sander есть на нашем сайте, ему виднее как.

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

morepol
Юзер

morepol - 6 июля 2020 00:33 -

Я писал на его сайте, ответа не поступило к сожалению)

dj-avtosh
PHP-developer

dj-avtosh - 5 июля 2020 21:59 -

- INTERVAL 0 тоже странно. В общем лучше говый модуль закажите, тут каша какая-то. Похоже модуль от старой dle пытаетесь поставить на очень новую.

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

sjlg89
Юзер

sjlg89 - 6 июля 2020 21:33 -

Есть вот такой хак https://sandev.pro/web/49-samyy-prosmatrivaemyy-material-za-tekuschiy-den.html - себе поставил на дле 13.3 работает.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх