Обновление значения звездочки при втором щелчке с использованием jQuery и ajax - PullRequest
0 голосов
/ 30 мая 2020

Я работаю над системой оценки звезд, которая является моей частью моего проекта. Рейтинг сохраняется в моей базе данных всякий раз, когда пользователь ставит оценку, нажимая на звездочки вместе с биоданными пользователя. Теперь, как мы знаем, иногда, когда пользователь оценивает какой-либо продукт, его / ее мнение может в какой-то момент измениться и захотеть обновить рейтинг. Это проблема, с которой я сейчас сталкиваюсь. Всякий раз, когда пользователь выставляет оценку, она сохраняется, но когда тот же пользователь снова дает оценку, он снова сохраняет значение вместо обновления существующего значения. Пожалуйста, помогите мне. Я должен отправить свой проект 8 июня.

Вот мой jQuery код:

$(document).ready(function(){

 load_business_data();

 function load_business_data()
 {
  $.ajax({
   url:"m.php",
   method:"POST",
   success:function(data)
   {
    $('#business_list').html(data);
   }
  });
 }

 $(document).on('mouseenter', '.rating', function(){
  var index = $(this).data("index");
  var business_id = $(this).data('business_id');
  remove_background(business_id);
  for(var count = 1; count<=index; count++)
  {
   $('#'+business_id+'-'+count).css('color', '#ffcc00');
  }
 });

 function remove_background(business_id)
 {
  for(var count = 1; count <= 5; count++)
  {
   $('#'+business_id+'-'+count).css('color', '#ccc');
  }
 }

 $(document).on('mouseleave', '.rating', function(){
  var index = $(this).data("index");
  var business_id = $(this).data('business_id');
  var rating = $(this).data("rating");
  remove_background(business_id);
  //alert(rating);
  for(var count = 1; count<=rating; count++)
  {
   $('#'+business_id+'-'+count).css('color', '#ffcc00');
  }
 });

 $(document).on('click', '.rating', function(){
  var index = $(this).data("index");
  var business_id = $(this).data('business_id');
var username='<?php echo $_SESSION["username"];?>';
var useremail='<?php echo $_SESSION["useremail"];?>';

  $.ajax({
   url:"insert_rating.php",
   method:"POST",
   data:{index:index, business_id:business_id, username:username, useremail:useremail},
   success:function(data)
   {
if(data == 'done')
    {
       alert("There is some problem in System");
    }
    else
    {
 load_business_data();
     alert("Dear "+username+",You have rate "+index +" out of 5");

    }
   }
  });

 });

});
</script>
here is my pdo code use to insert query
<?php

//insert_rating.php
session_start();
$connect = new PDO('mysql:host=localhost;dbname=final', 'root', '');

if(isset($_POST["index"], $_POST["business_id"], $_POST["username"], $_POST["useremail"]))
{  
 $query = "
 INSERT INTO rating(business_id, rating, username,useremail) 
 VALUES (:business_id, :rating, :username, :useremail)
 ";
  $statement = $connect->prepare($query);
      $statement->execute(
  array(
   ':business_id'  => $_POST["business_id"],
   ':rating'   => $_POST["index"],
':username'   => $_POST["username"],
':useremail'   => $_POST["useremail"],
  )
);
 $result = $statement->fetchAll();
 if(isset($result))
 {
echo 'done';

?>

1 Ответ

0 голосов
/ 30 мая 2020

Сначала вам нужно проверить, добавил ли пользователь свой рейтинг, для этого вам нужно подсчитать рейтинг в соответствии с именем пользователя или идентификатором сеанса, если его рейтинг уже существует в базе данных, тогда вы пишете запрос на обновление, иначе напишите запрос вставки. Вот простая демонстрация этого:

$stmt = $connect->prepare("SELECT * FROM `rating` WHERE ''");//add your conditions here according to user and that particular rating
$ifExists = $stmt->rowCount();
if ($ifExists == 0) {
  //write your insert query here
} else {
  //write update query here
}

Надеюсь, это поможет вам, если вам нужно быть более ясным, прокомментируйте ниже

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...