我有一个名为Add to Favourites
的按钮。单击此按钮时,它会执行PHP查询,其中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>";
}
使用此代码,数据会按预期插入到数据库中,remove from favourites
按钮出现,但当它只显示其中一个时,它会与add to favourites
按钮一起显示取决于用户是否喜欢。
底线,只有两个按钮应始终显示,send message
按钮和Add to favourites
按钮(如果用户不在收藏夹中)或send message
按钮一起显示remove from favourites
按钮,如果它们在收藏夹中(如果数据在数据库中,它们已被登录用户所青睐)。
答案 0 :(得分:0)
您可以使用jQuery
和json
来解决这个问题。我会这样做:
- 在加载页面之前,如果用户已经受到青睐(来自咨询数据库)并将其设置为$isFavorited
或其他东西,请添加一些php来获取。然后,在同一页面中,添加一个<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);
}
});