-1
我正在使用自定義mvc框架並添加了一個favourite
按鈕。一旦按下這個顯示'成功添加到收藏夾'div
,當再次點擊時,它顯示'成功刪除收藏夾'div
。加載頁面時檢查/設置按鈕狀態
我的查詢工作正常,添加和從我的favourite
表刪除,因爲它應該。
我現在想要做的是根據選擇改變按鈕的狀態。例如,如果用戶已將的書中其收藏夾添加btn-success
類,如果用戶還沒有,請使用btn-default
類。
我不知道最好的方法來解決這個問題。我是新來的PHP和JS所以任何意見或方向表示讚賞。我曾嘗試添加toggleClass到我的JS,但它不工作。我需要在pageLoad上執行查詢/檢查嗎?
我已將下面的代碼包含在內以供參考。
itemView.php
echo
'<td>
<button id="fav" value="'.$book->id.'" type="button" class="btn btn-default"></button>
</td>';
JS(在itemView.php)
$(document).ready(function(){
$("#fav").click(function(){
book_id = $(fav).val();
$.ajax({
type: 'POST',
url: '<?php echo URL; ?>books/checkFav',
data: {book_id:book_id},
success: function() {
window.location.reload(true);
$("#fav").addClass("btn-success");
}//end success
});//end ajax
});
});
我checkFav功能
public function checkFav($bookid,$userid)
{
$bookid=$_REQUEST['book_id'];
$userid=$_SESSION['user_id'];
$sql = "SELECT * FROM favourite WHERE book_id = :book_id AND user_id = :user_id";
$query = $this->db->prepare($sql);
$query->bindParam(':user_id', $userid);
$query->bindParam(':book_id', $bookid);
$query->execute();
$rows_found = $query->fetchColumn();
if(empty($rows_found)) {
$sql = "INSERT INTO favourite (book_id, user_id) VALUES (:book_id, :user_id)";
$query = $this->db->prepare($sql);
$query->bindParam(':user_id', $userid);
$query->bindParam(':book_id', $bookid);
$query->execute();
if ($query->rowCount() == 1) {
// successful add to favs
$_SESSION["feedback_positive"][] = FEEDBACK_ADDED_TO_FAVS;
return true;
}
} else {
$sql = "DELETE FROM favourite WHERE book_id = :book_id AND user_id = :user_id";
$query = $this->db->prepare($sql);
$query->bindParam(':user_id', $userid);
$query->bindParam(':book_id', $bookid);
$query->execute();
if ($query->rowCount() > 0) {
// successful remove from favs
$_SESSION["feedback_negative"][] = FEEDBACK_REMOVED_FROM_FAVS;
return true;
}
}
}
只有一件事我看到一個通知'注意:未定義的索引:btnClicked ...在第4行 - 這是'if($ _ SESSION ['btnClicked'] ==「success」){'不是一個大問題儘管如此,有什麼想法? –
默認情況下,沒有名稱爲「btnClicked」的會話索引,它在if條件中使用。請使用以下代碼:if(isset($ _ SESSION ['btnClicked'])&& $ _SESSION ['btnClicked'] ==「success」){ $ css =「btn_success」; } ....希望如此未定義的通知將被刪除。 –
完美! @#的Pankaj –