【问题标题】:Alternating/displaying buttons depending on PHP and DB conditions根据 PHP 和 DB 条件交替/显示按钮
【发布时间】:2016-02-26 20:44:27
【问题描述】:

我有一个名为Add to Favourites 的按钮。单击此按钮时,它会执行一个 PHP 查询,将 inserts 数据输入数据库。这是存储数据的表:

favourites 表:

   id
   favourited_who
   favourited_by

一个用户只能被登录用户收藏一次。例如,如果 Alice 已登录,那么 Alice 只能收藏 Freddy 一次,如果 Freddy 已经收藏,则 add to favourites 按钮将被 remove from favourites 按钮替换。

这是我将数据发送到数据库的 PHP 查询:

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 按钮,如果它们在收藏夹中(如果数据在登录用户收藏的数据库中)。

【问题讨论】:

  • 您在&lt;/div 中缺少关闭&gt; 括号。

标签: php mysql


【解决方案1】:

您可以使用jQueryjson 来解决这个问题。我会这样做:
- 在加载页面之前,如果用户已经被收藏(来自咨询数据库),则放置一些 php 来获取并将其设置为 $isFavorited 或其他东西。然后,在同一页面中,添加一个 &lt;script&gt; 元素并在其中添加以下内容:

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);
            }
        }); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多