交替/显示按钮取决于PHP和DB条件

时间:2016-02-26 20:44:28

标签: php mysql

我有一个名为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按钮,如果它们在收藏夹中(如果数据在数据库中,它们已被登录用户所青睐)。

1 个答案:

答案 0 :(得分:0)

您可以使用jQueryjson来解决这个问题。我会这样做:
  - 在加载页面之前,如果用户已经受到青睐(来自咨询数据库)并将其设置为$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);
            }
        });