php - 如何在刷新后保持图像按钮状态

标签 php jquery mysql session post

我在刷新或注销后保持某些图像按钮的状态时遇到问题。我在页面上的每篇文章上都有一个收藏按钮,用户可以单击它来收藏它。我使用以下 jquery 函数将帖子的唯一 ID 发送到 mysql 表:

$('.faver').on('click',function() {

var articleId = $(this).closest('.row').attr('id');

  $.ajax(
    {
    url: "favscript/addremove",
    method: "POST",
    data: { favourite: articleId },
    success: function() 
    {  
        alert(<?php echo $favid ?>);
     }                  

  });

});

然后在接收的 php 文件中我得到这样的 session 变量:

 session_start();

if(isset($_SESSION['id']) AND isset($_POST['favourite'])){

$user = mysql_real_escape_string($_SESSION['id']);

$_SESSION['favourite'] = $_POST['favourite']; 

$favid = mysql_real_escape_string($_SESSION['favourite']);

然后我像这样将值插入到 mysql 表中:

// Firstly, check if article is favourite or not

$query = mysql_query("SELECT * FROM ajaxfavourites WHERE user=$user AND favid=$favid");
$matches = mysql_num_rows($query);

// If it is not favourited, add as favourite

if($matches == '0'){
mysql_query("INSERT INTO ajaxfavourites (user, favid) VALUES ('$user', '$favid')");


}

// Instead, if it is favourited, then remove from favourites

if($matches != '0'){
mysql_query("DELETE FROM ajaxfavourites WHERE user=$user AND favid=$favid");


}

} 

现在以上所有方法都有效,但我的问题是我似乎无法找到一种方法让每个按钮在用户刷新或注销后记住其状态。如果我将 $favid 设置为 $_SESSION['favourite'],它将在刷新后将所有按钮的按钮状态设置为相同。

这是我检查按钮状态应该是什么的方式:

 <!--Favourite Button-->
    <div id="favouritediv"> 

        <?php 

        $user = $_SESSION['id'];
        $favid = $_SESSION['favourite'];  //  <- problem here

        $query = mysql_query("SELECT * FROM ajaxfavourites WHERE user=$user AND favid=$favid");

    $matches = mysql_num_rows($query);

        if($matches == 0){
        ?>

        <img id="button" class="faver fave0 tog" src= "favscript/images/0.jpg" onclick="" width="54" height="49">


        <?php
        }

        if ($matches == 1) {
        ?>

        <img id="button" class="faver fave0 tog" src= "favscript/images/1.jpg" onclick="" width="54" height="49">


        <?php
        }
         ?>

    </div>  
        <!--Favourite Button END-->

如果我直接将 $favid 设置为文章的 ID,例如:$favid = 3;它会完美地工作,但我无法理解如何使用 $session 变量或可以分别获取每个按钮的文章 ID 并仅单独影响每个按钮的东西来正确地完成它。

我希望这是有道理的,我是 php 的新手,非常感谢任何有关如何执行此操作的帮助。

谢谢。

最佳答案

如果您希望即使在用户注销后仍能进行 session ,只需将登录事件存储在单独的表中即可。像用户 ID 和 session ID 列。最终得到事件表的最后一行。

编码愉快!

关于php - 如何在刷新后保持图像按钮状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31204508/

相关文章:

javascript - 可靠的文本框自动完成方法

MYSQL - 多个计数语句

mysql - InnoDB使用COUNT() + WHERE时出现索引问题

mysql - 我的机器上安装了多个 MySql,如何选择使用哪个?

php - 减少数据库 PHP MySQL 显示的图像数量

javascript - Ajax 返回带有额外 readyState、responseText、status 和 statusText 的 JSON 对象

javascript - 输入更改时从一组输入中删除内容

javascript - 为什么 javascript 将 typeof 显示为 "string"当它是数字时?

php - 元编程到几种输出语言

php - 有没有办法用数组数据为sql代码创建foreach