Простой вариант внедрения рейтинга на сайте, готовый скрипт рейтинга
Автор: © web-rubik
3304 Просмотры
5 Понравилось
Скрипт рейтинга написан на языках 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 голосовавшего пользователя и, если пользователь не голосовал за этот продукт, будет произведена запись голоса и подсчёт рейтинга.
На этом у меня всё. Думаю у Вас не составит ни какого труда установить скрипт рейтинга у себя на сайте. Есть вопросы, оставь в комментариях!
Комментариев нет или
Оставить комментарий
Оставленные комментарии проверяются технической частью интернет портала Web-rubik.ru