Звездная рейтинговая система сохранения значения по клику только сохранения значения в базе данных - PullRequest
1 голос
/ 08 января 2020

Я пытаюсь создать систему оценки по звездам, у меня есть этот код, и я хочу внести в него некоторые изменения, после того, как пользователь нажимает на звезды, он показывает предупреждение о том, сколько звезд и какие цвета сбрасываются, что я хочу, чтобы цветовая заливка оставалась после того, как пользователь нажал на нее, и заменила оповещение на div под звездами, вот мой код:

Js:

$(function() {
    $("div.star-rating > s, div.star-rating-rtl > s").on("click", function(e) {

    // remove all active classes first, needed if user clicks multiple times
    $(this).closest('div').find('.active').removeClass('active');

    $(e.target).parentsUntil("div").addClass('active'); // all elements up from the clicked one excluding self
    $(e.target).addClass('active');  // the element user has clicked on


        var numStars = $(e.target).parentsUntil("div").length+1;
        $('.show-result').text(numStars + (numStars == 1 ? " star" : " stars!"));
    });
});

CSS:

.show-result {
  margin: 10px;
  padding: 10px;
  color: green;
  font-size: 20px;
}

.star-rating s:hover,
.star-rating s.active {
    color: red;
}
.star-rating-rtl s:hover,
.star-rating-rtl s.active {
    color: red;
}

.star-rating s,
.star-rating-rtl s {
    color: black;
    font-size: 50px;
    cursor: default;
    text-decoration: none;
    line-height: 50px;
}
.star-rating {
    padding: 2px;
}
.star-rating-rtl {
    background: #555;
    display: inline-block;
    border: 2px solid #444;
}
.star-rating-rtl s {
    color: yellow;
}
.star-rating s:hover:before,
.star-rating s.rated:before,
.star-rating s.active:before {
    content: "\2605";
}
.star-rating s:before {
    content: "\2606";
}
.star-rating-rtl s:hover:after,
.star-rating-rtl s.rated:after,
.star-rating-rtl s.active:after {
    content: "\2605";
}

.star-rating-rtl s:after {
    content: "\2606";
}

html

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="star-rating"><s><s><s><s><s></s></s></s></s></s></div>
<div class="show-result">No stars selected yet.</div>

здесь значение может отображаться, но как сохраните это значение в mysql.

1 Ответ

1 голос
/ 08 января 2020

Чтобы хранить звездные рейтинги в базе данных, вы должны использовать Ajax. Приведенный ниже код демонстрирует использование Jquery Ajax post для публикации значений в сценарии на стороне сервера (PHP).

$(e.target).addClass('active');  // the element user has clicked on

var numStars = $(e.target).parentsUntil("div").length+1;
// modification starts here....
$.post( "saveRatings.php", { rating: numStars})// you may pass other necessary information 
     .done(function( data ) {
          $('.show-result').text(numStars + (numStars == 1 ? " star" : " stars!"));
});

в файле saveRatings.php,

$ratings = $_POST['ratings'];
// You may need to pass more information to identify the user who gives the rating or the product that is being rated.

// Add your MySQL query to save the rating information to a database table

// return a success/failure response as needed.

Вам может потребоваться получить оценку из базы данных и передать ее в код javascript, чтобы сохранить оценки при перезагрузке страницы.

...