Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » jQuery » Не работает рейтинг комментов, как решить?

Не работает рейтинг комментов, как решить?


     07.04.2022    jQuery, Общие вопросы по PHP    666

вопрос
Приветствую. На сайте имеется рейтин комментов, по каким то не понятным причинам перестал работать, при нажатиии на кнопку лайк или дизлайк в консоли выводится ошибка Uncaught TypeError: Cannot read properties of null (reading 'success')

имеется 2 файлы рейтинга

js


	
	jQuery(document).ready(function($){
	
		var cemt = null;
		if ($('#dle-comments-list')) {
			$('#dle-comments-list').on('click', '.comm-rate-up, .comm-rate-down', function(e){
				e.preventDefault();
				var comm_id = $(this).closest('.comm-rate').attr('data-id');
				$.ajax({
					url: '/engine/ajax/comm_rate.php',
					type: 'POST',
					data: {id: comm_id, action: (($(this).hasClass('comm-rate-up')) ? 'up' : 'down')},
					success: function(result){
						if (result.success) {
							var comm = $('.comm-rate[data-id = "' + comm_id + '"] .comm-rate-count');
							comm.html(result.rating);
							comm.removeClass('count-m count-p');
							if (result.class != '') comm.addClass(result.class);
                        } else {
                        clearTimeout(cemt);
                        $('#comm-errmsg').hide().html(result.message).fadeIn(300, function(){
                        		cemt = setTimeout(function(){
                        			$('#comm-errmsg').fadeOut(300, function(){
                        				$(this).html('');
                        			});
                        		}, 3000);
                        	});
                        }
					},
					error: function(){
					
					}
				});
				return false;
			});
		}

	});


и файл comm_rate


<?php
error_reporting(0);
ini_set('display_errors', 0);
session_start();

header("Content-type: application/json; charset=utf-8");

define( 'DATALIFEENGINE', true );
define( 'ROOT_DIR', substr( dirname(  __FILE__ ), 0, -12 ) );
define( 'ENGINE_DIR', ROOT_DIR . '/engine' );

$ctime = time();

$comm_id = (isset($_POST['id']) && (int)$_POST['id'] > 0) ? (int)$_POST['id'] : '';
$action = (isset($_POST['action']) && ($_POST['action'] == 'up' || $_POST['action'] == 'down')) ? $_POST['action'] : '';
if (empty($comm_id) || empty($action)) die ("Hacking attempt!");

include ENGINE_DIR . '/data/config.php';
require_once ENGINE_DIR . '/classes/mysql.php';
require_once ENGINE_DIR . '/data/dbconfig.php';
require_once ENGINE_DIR . '/modules/functions.php';
require_once ENGINE_DIR . '/modules/sitelogin.php';

/* ----- ----- ----- ----- ----- */
if (!empty($_SESSION['_uh_c']) && !empty($_SESSION['_uth_c']) && !empty($_SESSION['_uh']) && !empty($_SESSION['_uth']) && !empty($_COOKIE[$_SESSION['_uh_c']]) && !empty($_COOKIE[$_SESSION['_uth_c']])) {
	if ($_COOKIE[$_SESSION['_uh_c']] == $_SESSION['_uh'] && $_COOKIE[$_SESSION['_uth_c']] == $_SESSION['_uth']) {
		$cdata = array();
		$db->query("DELETE FROM comm_rating_stat WHERE last_activity < " . ($ctime - 3600 * 24));
		$uh_data  = $db->super_query("SELECT last_activity, activity_data FROM comm_rating_stat WHERE uh = '" . $_SESSION['_uh'] . "'");
		if (!empty($uh_data)) {
			$uh_data['activity_data'] = unserialize($uh_data['activity_data']);
			if ($uh_data['last_activity'] > $ctime - 0) {
				$db->query("UPDATE comm_rating_stat SET last_activity = $ctime WHERE uh = '" . $_SESSION['_uh'] . "'");
				err_msg('Вы голосуете слишком часто');
			}
			if (in_array($comm_id, $uh_data['activity_data'])) err_msg('Вы уже голосовали за этот комментарий');
			$uh_data['activity_data'][] = $comm_id;
			$db->query("UPDATE comm_rating_stat SET last_activity = $ctime, activity_data = '" . serialize($uh_data['activity_data']) . "' WHERE uh = '" . $_SESSION['_uh'] . "'");
		} else {
			$db->query("INSERT INTO comm_rating_stat (uh, last_activity, activity_data) VALUES ('" . $_SESSION['_uh'] . "', $ctime, '" . serialize(array($comm_id)) . "')");
		}
	} else err_msg('Ошибка. Обновите страницу и попробуйте снова');
} else die();
/* ----- ----- ----- ----- ----- */

$comm = $db->super_query("SELECT * FROM " . PREFIX . "_comments WHERE id = $comm_id");

if ($is_logged) {
	if ($member_id['user_id'] == $comm['user_id']) err_msg('Нельзя голосовать за свой комментарий');
}

$db->query("UPDATE " . PREFIX . "_comments SET rating = rating " . (($action == 'up') ? '+' : '-') . " 1, vote_num = vote_num + 1 WHERE id = $comm_id LIMIT 1");
$comm = $db->super_query("SELECT * FROM " . PREFIX . "_comments WHERE id = $comm_id");

$rating = round((int)str_replace('+', '', (string)$comm['rating']), 0);
$comm_rate_count_s = $comm_rate_count_c = '';
if ($rating > 0) {
	$comm_rate_count_s = '+'; $comm_rate_count_c = ' count-p';
} elseif ($rating < 0) {
	$comm_rate_count_c = ' count-m';
}

echo json_encode(array(
	'success' => true,
	'rating' => $comm_rate_count_s.$rating,
	'class' => $comm_rate_count_c,
));

function err_msg($message) {
	echo json_encode(array(
		'success' => false,
		'message' => $message,
	));
	die();
}
?>


что в этом коде нужно поправить что бы заработал рейтинг?

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


1 комментарий

dj-avtosh
PHP-developer

dj-avtosh - 11 апреля 2022 11:05 -

Здравствуйте. Напишите, что во вкладке Network возвращает запрос к comm_rate

По заказам пишем сюда: @Rud00y

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

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

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

наверх