我有一个叫Add to Favourites
的按钮。当单击此按钮时,它将执行一个inserts
查询,其中的数据进入数据库。下面是存储数据的表:
favourites
表:
id
favourited_who
favourited_by
用户只能被登录用户收藏一次。例如,如果Alice登录,那么Alice只能喜欢Freddy一次,如果Freddy已经是热门,那么add to favourites
按钮将被remove from favourites
按钮所取代。
下面是我的PHP查询,它向DB发送数据:
if (isset($_POST['addfriend'])) {
$fav_request = $_POST['addfriend'];
$favourited_who = $user; // u variable
$favourited_by = $username; // logged in user
$q = mysqli_query ($connect, "SELECT * FROM favourites");
while ($r_query = mysqli_fetch_array($q)) {
$db_fav_who = $r_query['favourited_who'];
$db_fav_by = $r_query['favourited_by'];
if ($db_fav_by == $username){ // check to see which users favourites we are checking
// if the user already exists in the logged in users favourites, then display remove from favourites button.
if ($db_fav_who == $user){
echo "<div class='edit_profile'>
<input type='submit' class='btn btn-info' name='remfriend' value='Remove from Favourites'>
</div";
}
}
}// while loop closed
if ($user != $username) { // Check: See user isnt favouriting themself.
$favourite_user = mysqli_query($connect, "INSERT INTO favourites VALUES ('', '$favourited_who', '$favourited_by')");
$errMsg = "Favourited";
echo "done ";
}
}
if ($user == $username){
// dont display buttons
} else {
echo " <form method='post'>
<input type='submit' class='btn btn-info' name='sendmsg' value='Send Message'/>
<input type='submit' class='btn btn-info' name='addfriend' value='Add to Favourites'>
</form>";
}
使用此代码,数据将按预期的方式插入到DB中,remove from favourites
按钮将出现,但它将与add to favourites
按钮一起出现,而根据用户是否最喜爱,只应显示其中的一个按钮。
总之,应该始终只显示两个按钮,如果用户不在收藏夹中,则send message
按钮和Add to favourites
按钮一起显示;如果用户不在收藏夹中,则显示send message
按钮和remove from favourites
按钮(如果数据在数据库中,则为登录用户的收藏夹)。
发布于 2016-02-26 16:58:34
您可以使用jQuery
和json
来解决这个问题。我会这样做:
$isFavorited
或其他东西。然后,在同一页面中添加一个<script>
元素,并在其中添加以下内容:var favourited = <?php echo json_encode($isFavorited); ?>;
if(favourited)
{
$("#someHtmlElem").after("<button value="remove from favorites">");
//will add <button> after #someHtmlElem
} else {
$("#someHtmlElem").after("<button value="add to favorites">");
}
若要在用户单击时与数据库合并,可以使用ajax:
$.ajax({
url: "file.php",
type: "POST",
data: {favourited: "true"}, //will send "true" to $_POST
success: function(d) {
alert(d);
}
});
https://stackoverflow.com/questions/35661385
复制相似问题