2016-07-26 28 views
-2

Ich verwende einen einfachen Ein/Aus-Schiebeschalter, um ein Feld in meiner Datenbank zu aktualisieren.Verwenden von An/Aus Checkbox Gleitschalter zum Ausführen von SQL-Abfrage

Ich stelle es auf "kein Problem", aber es dem Benutzer zu erlauben, es auszuschalten, scheint mir Probleme zu machen. Ich habe mehrere Schalter auf dieser Seite, also wenn ich "sende", wird es "on" Werte auf "aus" schalten, es sei denn, ich entferne die elseif Aussage.

Es scheint, dass der Code das $ _POST ['check-twitter'] als "isset" ansieht, wenn es eingeschaltet ist, aber "! Isset", wenn ich es von on auf off umschalte.

Wenn ich meinen Code ändere, um stattdessen "elseif (! Isset ....)" dann wenn ich wieder auf die Seite komme, erkennt es nicht die "on" -Position als "isset", so dass es automatisch dreht es weg. Es scheint widersprüchlich zu dem, was als "isset" und "! Isset" betrachtet wird.

Ich möchte der Switch nur die Datenbank aktualisieren, wenn der Benutzer es ändert, und ich brauche den Schalter, um den Benutzer anzuzeigen, ob es "ein" oder "aus" ist.

// $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"/> 
+0

wo/wie hast du '$ twitter_check' definieren? es gibt hier nicht genug code und wenn es tatsächlich eine post-methode gibt. –

+0

@ Fred-ii- Wie ich in meinem Beitrag gesagt habe, stellt $ twitter_check das Feld aus der Datenbank dar, das gleich 'Ja' oder 'Nein' ist. Es gibt offensichtlich mehr Code auf meiner Seite, auf dem die SQL-Abfrage und das Formular angezeigt werden, aber es ist nicht relevant für das Verständnis des Problems, das ich erfahre, und ich versuche nur, den Code zu präsentieren, in dem das Problem besteht. – Shane

Antwort

0

Ich habe es funktioniert ...

<?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> 
0
<?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"/> 
  • Wenn es nur zwei mögliche Werte, if ... else verwendet werden soll.
  • PHP-Code muss in PHP-Tags enthalten sein.
  • $ _POST-Variablen können unverändert ohne Neuzuweisung verwendet werden.