我正致力于添加我网站的最爱功能,每件事情都运转良好
当我点击add to favourites button
时,ajax调用会在数据库中插入该数据并将按钮文本更改为“从收藏夹中移除”'
现在问题是当我重新加载页面时,它再次将按钮文本重置为“添加到收藏夹”。以前被标记为最爱。
我的代码是
<button class='btn btn-sm btn-info favourite_feature' value="<?php echo $id;?>">add to favourite</button>
JQUERY
$(".favourite_feature").click(function(){
var _this = $(this);
var postid = _this.val();
$.ajax({
type : 'POST',
url : 'add_to_favourite.php',
dataType : 'json',
data : {course_id : postid},
success : function(response){
console.log(response);
if(response.error_type == 'no error'){
alert('done');
(_this).html(_this.html()=='add to favourite' ? 'remove from favourites' : 'add to favourite');
}else{
if(response.error_type == 'login'){
$('#myModal').modal('show');
}
}
}
});
});
编辑:添加服务器端代码
<?php
session_start();
include 'includes/dbconfig.php';
if(!isset($_SESSION['google_data'])){
$response = array('success' => 0, 'error_type' => 'login');
echo json_encode($response);
}else{
$id = $_SESSION['id'];
$c_id = $_POST['course_id'];
$_SESSION['course_id']=$c_id;
$u_email = $_SESSION['google_data']['email'];
$check_favourites = "SELECT * from favourites_table where user_id = '$id' and course_id = '$c_id'";
$check_favourites_query = mysqli_query($conn,$check_favourites) or die(mysqli_error($conn));
$check_favourites_result = mysqli_fetch_array($check_favourites_query);
if($check_favourites_result){
$del = "DELETE FROM favourites_table where user_id = '$id' and course_id = '$c_id'";
$del_favourites = mysqli_query($conn,$del) or die(mysqli_error($conn));
}else{
$insert_query = "INSERT INTO favourites_table(course_id,user_id,user_email) VALUES('$c_id','$id','$u_email')";
mysqli_query($conn,$insert_query);
}
$response = array('success' => 1, 'error_type' => 'no error');
echo json_encode($response);
}
?>
答案 0 :(得分:2)
在服务器端,您需要在呈现按钮之前检查项目当前是否已添加到收藏夹,并正确设置文本。
我不知道你的数据结构,但是假设在PHP中你可以根据数据库字段定义一个布尔变量$isFavourite
,该数据库字段针对有问题的项目存储(可能是由{定义的相同项目) {1}}在您提供的代码段中。
所以你要做的就是将标记更改为:
$id