Php 使用开/关复选框滑动开关运行SQL查询

Php 使用开/关复选框滑动开关运行SQL查询,php,html,checkbox,mysqli,isset,Php,Html,Checkbox,Mysqli,Isset,我使用一个简单的开/关滑动开关来更新数据库中的字段 我把它“打开”没有问题,但允许用户“关闭”似乎给我带来了麻烦。我在这个页面上有多个开关,所以每当我“提交”时,它都会将“开”值切换到“关”,除非我删除elseif语句 代码似乎认为$_POST['check-twitter']在打开时为“isset”,但在我将其从打开切换到关闭时为“!isset” 如果我将代码改为“elseif(!isset…)”,那么当我再次进入页面时,它不会将“on”位置识别为“isset”,因此会自动将其关闭。它似乎与“

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

我把它“打开”没有问题,但允许用户“关闭”似乎给我带来了麻烦。我在这个页面上有多个开关,所以每当我“提交”时,它都会将“开”值切换到“关”,除非我删除elseif语句

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

如果我将代码改为“elseif(!isset…)”,那么当我再次进入页面时,它不会将“on”位置识别为“isset”,因此会自动将其关闭。它似乎与“isset”和“!isset”不一致

我希望开关仅在用户更改数据库时更新数据库,并且我需要开关向用户显示它是“打开”还是“关闭”

/$twitter\u check表示数据库中等于“是”或“否”的字段

  • 当只有两个可能值时,应使用if…else
  • PHP代码必须包含在PHP标记中
  • $\u 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>
      

      您在哪里/如何定义
      $twitter\u check
      ?这里没有足够的代码,如果确实使用了post方法。@Fred ii-正如我在帖子中所说,$twitter\u check表示数据库中等于“是”或“否”的字段。我的页面上显然有更多的代码显示SQL查询和表单,但这与理解我遇到的问题无关,我只是尝试在存在问题的地方展示代码。
      <?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"/>
      
      <?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>