我有一个带有“favourite
”按钮的页面,当点击该按钮时会运行Ajax帖子并相应地更新我的数据库表“favourite
”用户和预订< / strong>详细信息。
目前的流程如下,
点击按钮一次&gt;将书添加到收藏表&gt;刷新页面&gt;显示成功div
再次点击按钮&gt;从收藏表中删除书籍&gt;刷新页面&gt;显示成功div
我现在要做的是页面加载,检查用户是否已将该书添加为收藏夹,如果是,请将此按钮的类设置为btn-success(绿色)。
我如何实现这一目标?我是否需要在页面加载时为按钮指定属性并在页面加载时检查它?
我是php和js的新手,所以任何建议都表示赞赏。我已将我的代码包含在内以供参考。
AJAX
$(document).ready(function(){
$( "#fav" ).click(function(){
book_id = $(fav).val(); // set the value of the button as the book_id
$.ajax({
type: 'POST',
url: '<?php echo URL; ?>books/checkFav',
data: {book_id:book_id},
success: function () {
window.location.reload(true);
}//end success
});//end ajax
});
});
checkFav php
$bookid=$_REQUEST['book_id']; //get this from ajax
$userid=$_SESSION['user_id']; //get this from session
$sql = "SELECT * FROM favourite WHERE book_id = :book_id AND user_id = :user_id";
... //execute
if(empty($rows_found)) {
$sql = "INSERT INTO favourite (book_id, user_id) VALUES (:book_id, :user_id)";
... //execute
} else {
$sql = "DELETE FROM favourite WHERE book_id = :book_id AND user_id = :user_id";
... //execute
}
HTML
echo '<td>
<button id="fav" value="'.$book->id.'" type="button" class="btn btn-default"></button></td>';
echo '</tr>';
答案 0 :(得分:2)
这是不正确的:
<button id="fav" value="'.$book->id.'" type="button" class="btn btn-default"></button>
您必须指定您想要PHP代码并且您想要echo
$book->id
,如下所示:
<button id="fav" value="<?php echo $book->id; ?>" type="button" class="btn btn-default"></button>
另外,假设你有一个PHP函数isFavorite
,然后是
<button id="fav" value="<?php echo $book->id; ?>" type="button" class="btn btn-default<?php echo ((isFavorite()) ? (" btn-success") : ("")); ?>"></button>
答案 1 :(得分:0)
您可以做两件事:
创建一个php函数,检查它是否已经是收藏夹并返回true或false,并根据该函数向该按钮添加一个类,如下所示:
$(&#34;#buttonId&#34)addClass。(&#34; BTN-成功&#34);
如果您在页面加载时已有此数据,则可以在html中添加内嵌的PHP代码,如下所示:
如果($喜爱){ $ class =&#34; btn-success&#34 ;; }
然后在html中
<button id="fav" value="<?php echo $book->id; ?>" type="button" class="btn <?php echo ($book->isFavorite()) ? 'favorite' : '';?>"></button>