2015-07-03 47 views
3

刷新或注销后,我在保持某些图像按钮的状态时出现问题。我在页面上的每篇文章上都有一个最喜欢的按钮,用户可以点击收藏该按钮。我用下面的jQuery功能后的唯一ID发送到MySQL表:php - 刷新后如何保持图像按钮状态

$('.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 ?>); 
    }     

    }); 

}); 

然后在recieving PHP文件我得到的会话变量是这样的:

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"); 


} 

} 

现在所有上述工作,但我的问题是,我似乎无法想出一个办法为每个按钮记住它的状态,一旦用户刷新或L ogs出来。如果我将$ 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和任何帮助,我应该这样做将不胜感激。

谢谢。

+0

会议后得到用户刷新网页上删除了? – Thamaraiselvam

回答

0

如果您希望在用户注销后进行会话,只需将登录活动存储在单独的表格中即可。像列用户ID和会话ID。最后得到活动表的最后一行。

快乐编码!

0

我觉得您的查询应该是获取所有favids为用户:

$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"> 

当然,$ individualFavId将被您的个人喜好取代。

示例代码:

<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"> 
相关问题