2016-07-26 11 views
-2

データベースのフィールドを更新するために、簡単なオン/オフスライディングスイッチを使用しています。オン/オフチェックボックスを使用してSQLクエリを実行するスライドスイッチ

私はそれを「オン」にしても問題はありませんが、ユーザーが「オフ」にすることができて困っているようです。このページには複数のスイッチがあるので、elseifステートメントを削除しない限り、 "submit"すると値が "off"になります。

$ _POST ['check-twitter']はオンになっているときには「isset」、オンに切り替えたときには「!isset」と考えられているようです。

私のコードを "elseif(!isset ....)"に変更した場合、再びページに来ると、 "on"の位置が "isset"として認識されず自動的に回転しますそれをオフにします。それは "isset"と "!isset"とみなされるものと矛盾しているようです。

ユーザーがデータベースを変更したときにデータベースを更新するだけで、スイッチをオンまたはオフに切り替える必要があります。

// $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

?実際にポストメソッドが使用されている場合は、ここに十分なコードがありません。 –

+0

@ Fred-ii-私の記事で述べたように、$ twitter_checkは、データベースのフィールドを 'Yes'または 'No'にします。明らかに私のページにはSQLクエリとフォームを示すコードがたくさんありますが、私が経験している問題を理解することとは関係ありません。問題のある場所にコードを提示しようとしています。 – Shane

答えて

0

私はそれが働いてしまった...

どのように `$のtwitter_check`を定義しなかった/
<?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"/> 
  • のみ2可能な値がある場合は、もし...他を使用する必要があります。
  • PHPコードはPHPタグで囲む必要があります。
  • $ _POST変数は、再割り当てなしでそのまま使用できます。
関連する問題