Search code examples
phphtmlcheckboxmysqliisset

Using On/Off Checkbox Sliding Switch to Run SQL Query


I am using a simple On/Off sliding switch to update a field in my database.

I turn it "on" no problem, but allowing the user to turn it "off" seems to be giving me trouble. I have multiple switches on this page, so whenever I "submit" it will turn "on" values to "off" unless I remove the elseif statement.

It seems the code considers the $_POST['check-twitter'] to be "isset" when it is on, but "!isset" when I switch it from on to off.

If I change my code to instead be "elseif(!isset....)" then when I come to the page again, it does not recognize the "on" position as being "isset" so it automatically turns it off. It seems inconsistent to what is considered "isset" and "!isset".

I want the switch to only update the database when the user changes it, and I need the switch to show the user whether it is "on" or "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"/>

Solution

  • I got it working...

    <?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>