使用 On/Off 复选框滑动切换到 运行 SQL 查询

Using On/Off Checkbox Sliding Switch to Run SQL Query

我正在使用一个简单的 On/Off 滑动开关来更新我数据库中的一个字段。

我转 "on" 没问题,但让用户转 "off" 似乎给我带来了麻烦。我在这个页面上有多个开关,所以每当我 "submit" 时,它将把 "on" 值变成 "off" 除非我删除 elseif 语句。

似乎代码认为 $_POST['check-twitter'] 打开时为 "isset",但当我将其从打开切换为关闭时为“!isset”。

如果我将代码更改为 "elseif(!isset....)",那么当我再次访问该页面时,它不会将 "on" 位置识别为 "isset",因此它会自动将其转换离开。这似乎与 "isset" 和 "!isset" 所认为的不一致。

我希望开关仅在用户更改数据库时更新数据库,并且我需要开关向用户显示是"on"还是"off."

// $twitter_check represents the field from the database which equals 'Yes' or 'No'

<label class="switch">
  <input type="checkbox" name="check-twitter" <?php echo $twitter_check == 'Yes'?'checked':''; ?>>
  <div class="slider"></div>
</label>

if(isset($_POST['check-twitter']) && $twitter_check == "No"){
    //SQL UPDATE $twitter_check = 'Yes'
    } elseif(isset($_POST['check-twitter']) && $twitter_check == "Yes") {
    //SQL UPDATE $twitter_check = 'No'
    }

<input class="button" type="submit" name="submit" value="Save"/>
<?php
// retrieve checkbox value from db
$check = /* db result (true|false) */;
?>

<label class="switch">
  <input type="checkbox" name="check-twitter" <?=$check && 'checked' ?> />
  <div class="slider"></div>
</label>

<?php
if($_POST['check-twitter']) {
// sql update checked
} else {
// sql update unchecked
}
?>

<input class="button" type="submit" value="Save"/>
  • 当只有 2 个可能值时,应使用 if...else
  • PHP 代码必须包含在 PHP 标签中。
  • $_POST 变量可以按原样使用,无需重新分配。

我成功了...

<?php

$sql = "SELECT * FROM XXXXXXX WHERE user_id = $id";

$result = mysqli_query($connection, $sql);
$row = mysqli_fetch_array($result);

$twitter_check = $row['auto_post_twitter'];
$facebook_check = $row['fb_auto_post'];
$schedule_check = $row['weekly_email'];

    if(isset($_POST['submit'])){

        // CHECK TWITTER
        if(isset($_POST['check-twitter']) && $twitter_check == "No"){
        $sql_twitter = "UPDATE XXXXXXXX SET auto_post_twitter = 'Yes' WHERE user_id = $id";

        $result_twitter = mysqli_query($connection, $sql_twitter);
        $row_twitter = mysqli_fetch_array($result_twitter);

        } elseif(!isset($_POST['check-twitter']) && $twitter_check == "Yes") {
        $sql_twitter2 = "UPDATE XXXXXXXX SET auto_post_twitter = 'No' WHERE user_id = $id";

        $result_twitter2 = mysqli_query($connection, $sql_twitter2);
        $row_twitter2 = mysqli_fetch_array($result_twitter2);
        }

        // CHECK FACEBOOK
        if(isset($_POST['check-facebook']) && $facebook_check == "No"){
        $sql_facebook = "UPDATE XXXXXXX SET fb_auto_post = 'Yes' WHERE user_id = $id";

        $result_facebook = mysqli_query($connection, $sql_facebook);
        $row_facebook = mysqli_fetch_array($result_facebook);

        } elseif(!isset($_POST['check-facebook']) && $facebook_check == "Yes") {
        $sql_facebook2 = "UPDATE XXXXXX SET fb_auto_post = 'No' WHERE user_id = $id";

        $result_facebook2 = mysqli_query($connection, $sql_facebook2);
        $row_facebook2 = mysqli_fetch_array($result_facebook2);
        }

        // CHECK WEEKLY SCHEDULE
        if(isset($_POST['check-weekly']) && $schedule_check == "No"){
        $sql_weekly = "UPDATE XXXXXXX SET weekly_email = 'Yes' WHERE user_id = $id";

        $result_weekly = mysqli_query($connection, $sql_weekly);
        $row_weekly = mysqli_fetch_array($result_weekly);

        } elseif(!isset($_POST['check-weekly']) && $schedule_check == "Yes") {
        $sql_weekly2 = "UPDATE foodtruck_user SET weekly_email = 'No' WHERE user_id = $id";

        $result_weekly2 = mysqli_query($connection, $sql_weekly2);
        $row_weekly2 = mysqli_fetch_array($result_weekly2);
        }

        // REFRESH PAGE
        echo "<meta http-equiv='refresh' content='0'>";
        }

    ?>

<form method="POST" action="XXXXXXXXX">

<label class="switch">
  <input type="checkbox" name="check-twitter" <?php echo $twitter_check == 'Yes'?'checked':''; ?>>
  <div class="slider"></div>
</label><br/>

<label class="switch">
  <input type="checkbox" name="check-facebook" <?php echo $facebook_check == 'Yes'?'checked':''; ?>>
  <div class="slider"></div>
</label><br/>

<label class="switch">
  <input type="checkbox" name="check-weekly" <?php echo $schedule_check == 'Yes'?'checked':''; ?>>
  <div class="slider"></div>
</label><br/>

<input class="button" type="submit" name="submit" value="Save" />

</form>