Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php-刷新后如何保持图像按钮状态_Php_Jquery_Mysql_Session_Post - Fatal编程技术网

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

php-刷新后如何保持图像按钮状态,php,jquery,mysql,session,post,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", d

刷新或注销后,我无法保持某些图像按钮的状态。我在页面上的每篇文章上都有一个收藏夹按钮,用户可以单击它来收藏它。我使用以下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 ?>);
     }                  

  });

});
然后我将值插入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['favorite'],则刷新后所有按钮的按钮状态都将相同

这是我检查按钮状态的方式:

 <!--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和任何帮助,我应该如何做这将非常感谢


谢谢

如果您想在用户注销后仍使用会话,只需将登录活动存储在单独的表中即可。类似于用户ID和会话ID列。最后获取活动表的最后一行


快乐编码

我认为您的查询应该是为一个用户获取所有favid:

$query = mysql_query("SELECT favid FROM ajaxfavourites WHERE user=$user");
while($row = mysql_fetch_assoc($result)){
    $allFavIds[] = $row['favid'];
}
现在使用$allFavIds数组,您可以检查每个按钮是否在该数组中存在其“favid”

<img id="button" class="faver fave0 tog" src="favscript/images/<?php echo in_array($individualFavId, $allFavIds) ? '1.jpg' : '0.jpg' ; ?>" onclick="" width="54" height="49">
“onclick=”“width=“54”height=“49”>
当然$individualFavId将被您的个人Favid取代

示例代码:

<img id="button" class="faver fave0 tog" src="favscript/images/<?php echo in_array(3, $allFavIds) ? '1.jpg' : '0.jpg' ; ?>" onclick="" width="54" height="49">
“onclick=”“width=“54”height=“49”>

用户刷新页面后会话是否被删除?
<img id="button" class="faver fave0 tog" src="favscript/images/<?php echo in_array(3, $allFavIds) ? '1.jpg' : '0.jpg' ; ?>" onclick="" width="54" height="49">