Здесь можно найти всё что Вам нужно! ⇒

Почта techsupport@web-rubik.ru

Простой вариант внедрения рейтинга на сайте, готовый скрипт рейтинга

Автор: © web-rubik

Скрипт рейтинга написан на языках PHP, JS, Ajax и MySQL, также в исходниках я положил необходимые CSS стили и изображение.

HTML код с необходимыми подключениями:


<?php 
include_once ("handler/php/db.php"); // Подключение к MySQL
include ("handler/php/meta.php"); // META Данные title, description, keywords ?>
<!DOCTYPE HTML>
<html>
<head> 
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title><?=$title?></title>
    <meta name="description" content="<?=$description?>" />
    <meta name="keywords" content="<?=$keywords?>" />
    <!-- Подключение к JS -->
    <script src="handler/js/jquery.min.js"></script>
    <!-- Подключение к CSS и JS звездочек рейтинга --> 
    <link rel="stylesheet" href="css/jstarbox.css" type="text/css" media="screen" charset="utf-8" />
    <script defer src="handler/js/jquery.flexslider.js"></script>
    <link rel="stylesheet" href="css/flexslider.css" type="text/css" media="screen" />
	<script src="handler/js/imagezoom.js"></script>
    <script>
        // Can also be used with $(document).ready()
        $(window).load(function() {
            $('.flexslider').flexslider({
                animation: "slide",
                controlNav: "thumbnails"
            });
        });
    </script>
</head>
<body>
    <!-- Выводим список из MySQL -->
	<?php $query = "SELECT * FROM `products`";
          $product = mysqli_query($connect, $query) or die(mysqli_error());
          $row = mysqli_fetch_assoc($product);
		  do { ?>
    <!-- HTML Рейтинг --> 
    <div style="text-align:center;">
        <h3><?=$row['text']?></h3>
        <p>Ваш рейтинг </p>
        <div class="block">
		    <div class="starbox small ghosting autoupdate" 
                 id="<?=$row['id']?>" 
                 data-start-value="<?=$row['votes'] * 2 / 10?>" 
                 style="cursor:pointer;"> </div>
            <p></p>
	    </div>
    </div>
    <br><br>
    <?php } while ($row = mysqli_fetch_assoc($product)); ?>
    <!-- JS Рейтинг ---->
    <script src="handler/js/jstarbox.js"></script>
	<!-- Ajax Рейтинг -->
	<script>
		jQuery(function() {
			jQuery('.starbox').each(function() {
				var starbox = jQuery(this);
				starbox.starbox({
					average: starbox.attr('data-start-value'),
					changeable: starbox.hasClass('unchangeable') ? false : starbox.hasClass('clickonce') ? 'once' : true,
					ghosting: starbox.hasClass('ghosting'),
					autoUpdateAverage: starbox.hasClass('autoupdate'),
					buttons: starbox.hasClass('smooth') ? false : starbox.attr('data-button-count') || 5,
					stars: starbox.attr('data-star-count') || 5
				}).bind('starbox-value-changed', function(event, value) {
					// AJAX
					jQuery.post('handler/php/vote.php', {rating: value*10/2, idProduct: $(this).attr("id")}, function(data) {
						starbox.next().text(data);
	                });
				}).bind('starbox-value-moved', function(event, value) {
					starbox.next().text('Поставить оценку: '+value*10/2);
				});
			});
		});
	</script>
</body>
</html>

Фотография кода:





После нажатия на звезду сработает Ajax. В Ajax методом POST передаётся путь к PHP файлу - handler/php/vote.php и необходимые переменные.
PHP обработчик рейтинга vote.php:



PHP обработчик рейтинга vote.php:


<?php // PHP Скрипт обработчик рейтинга
include_once ("db.php"); // Подключение
$ip = $_SERVER['REMOTE_ADDR']; // IP Адрес пользователя

if ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
	$idProduct = $_POST['idProduct']; // ID Продукта
	$rating = $_POST['rating']; // Поставленный рейтинг
	
	$vote = mysqli_fetch_assoc($connect->query("SELECT `ip` FROM `votes` WHERE `idProduct` = '$idProduct' AND `ip` = '$ip'")); // Проверка на существование IP
	$sqlVote = "INSERT INTO `votes` (`idProduct`, `vote`, `ip`)  VALUES ('$idProduct', '$rating', '$ip')"; // Запись голоса
	
	// Подсчёт рейтинга
	$query = "SELECT `vote` FROM `votes` WHERE `idProduct` = '$idProduct'";
    $votes = mysqli_query($connect, $query) or die(mysqli_error());
    $row = mysqli_fetch_assoc($votes);
	$totalRows = mysqli_num_rows($votes);
	if ($totalRows != 0) { $sum = 0; do { $sum = $row['vote'] + $sum; } while ($row = mysqli_fetch_assoc($votes)); round($sum = $sum / $totalRows); }
	else { $sum = $rating; }
	
	// Обновление рейтинга у продукта
	$sqlProduct = "UPDATE `products` SET `votes` = '$sum' WHERE `id` = '$idProduct'";
	if ($idProduct == 0) { exit; }
	else {
	    if (isset($vote['ip'])) { echo "Вы уже голосовали за этот продукт.."; exit; }
	    else {
		    mysqli_query($connect, $sqlVote);
		    mysqli_query($connect, $sqlProduct);
		    echo "Спасибо за Ваш голос..";
		    exit;
		}
	}
}
?>

Здесь берётся IP голосовавшего пользователя и, если пользователь не голосовал за этот продукт, будет произведена запись голоса и подсчёт рейтинга.

На этом у меня всё. Думаю у Вас не составит ни какого труда установить скрипт рейтинга у себя на сайте. Есть вопросы, оставь в комментариях!



Понравилось 1  

Комментариев нет или


Оставить комментарий

Оставленные комментарии проверяются технической частью интернет портала Web-rubik.ru



←−−−