Простой вариант внедрения рейтинга на сайте, готовый скрипт рейтинга
Автор: © web-rubik
2118 Просмотры
1 Понравилось
Скрипт рейтинга написан на языках 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