Я пытаюсь построить систему рейтинга 5 звезд. Я пробовал это с сеансом - чтобы все пользователи оценивали один сеанс.
Я пытался сделать что-то вроде этого:
session_start();
$id = "s".$_GET['id']; // the id of the word that the user rated
if(!isset($_SESSION[$id])){$_SESSION[$id] = 0;} //if null so rating = 0
$_SESSION[$id] += $_GET["rate"]; // the rate(1-5) added to the session
echo $_SESSION[$id];
мой вопрос - как я могу перестать добавлять значения в сеанс после того, как пользователь нажмет на звездочки ..? и если он щелкнет еще раз, старая ставка будет удалена, а новая - добавлена.
jquery:
$(document).ready(function () {
//var click = 0;
var click = [0,0,0,0,0,0,0,0,0];
var id = [];
$('.rating').each(function () {
id.push(this.id);
});
for (let step = 0; step < id.length; step++) {
$('#'+id[step] + ' .ratings_stars').mouseover(function() {
if(click[step] == 0){
$(this).prevAll().addBack().attr("src","star2.jpg");
}
//$(this).nextAll().removeClass('ratings_vote');
});
// Handles the mouseout
$('#'+id[step] + ' .ratings_stars').mouseleave(function() {
if(click[step] == 0){
$(this).prevAll().addBack().attr("src","star.png");
}
});
$('#'+id[step] + ' .ratings_stars').click(function() {
click[step] = 1;
$('#'+id[step]+ ' .ratings_stars').attr("src","star.png"); // Removes the selected class from all of them
$(this).prevAll().addBack().attr("src","star2.jpg"); // Adds the selected class to just the one you clicked
var rating = $(this).data('rating');
$.ajax({ //create an ajax request to display.php
type: "GET",
url: "rating.php",
data: {id:id[step], rate:rating},
success: function(response){
$(".avgrate"+id[step]).html(response);
}
});
});
} });