2015-07-03 46 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"> 
相關問題