Проблемы с Toggle Switch (отправка информации в SQL и сохранение проверки после обновления страницы) - PullRequest
0 голосов
/ 11 января 2019

Итак, у меня 2 проблемы с моим кодом: 1. отправка информации в базу данных SQL С моим текущим кодом, когда я нажимаю тумблер и слайдер переключателя, я могу отправлять обновления в базу данных SQL «НО», проблема в том, что на моем веб-сайте есть 3 тумблера, и когда я пытался нажать два или более переключателя на в то же время некоторые обновления могут не отправляться в базу данных, и моя информация не будет обновляться. 2. оставшиеся проверенные тумблеры после обновления страницы Как видите, я использую PHP для управления веб-сайтом HTML, поэтому я помещаю заголовок ('Location: url'), чтобы перенаправить на страницу HTML, и я хочу, чтобы тумблер оставался включенным, если пользователь его проверил.

Используемый мной тумблер похож на тумблер iPhone.

Settings.html (the toggle switches):

    <form method="POST" action="settings.php">
    <label class="switch">
      <input type="checkbox" name="Streaming" value = "ON">
      <span class="slider round"></span>
    </label></div></br></td>
    <label class="switch">
      <input type="checkbox" name="AutoPlay" value = "ON">
      <span class="slider round"></span>
    </label></div></br></td>
    <label class="switch">
      <input type="checkbox" name="Notification" value ="ON">
      <span class="slider round"></span>
    </label></div></td>
    <div align = "center"><font face="comic sans ms">
      <input type="submit" button class="button" value="SUBMIT" name="submit">
    </font></div>
    </form>

The php code:
    <?php
    session_start();
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "XXX";

$conn = new mysqli($servername, $username, $password, $dbname);
$select = "SELECT * FROM `Settings` WHERE ID = 1";
$result = $conn->query($select);
$row = mysqli_fetch_assoc($result);
$streaming_check = $row['Status'];

$select = "SELECT * FROM `Settings` WHERE ID = 2";
$result = $conn->query($select);
$row = mysqli_fetch_assoc($result);
$autoplay_check = $row['Status'];

$select = "SELECT * FROM `Settings` WHERE ID = 3";
$result = $conn->query($select);
$row = mysqli_fetch_assoc($result);
$notification_check = $row['Status'];

if (isset($_POST['submit'])){
    if((isset($_POST['Streaming']) == "ON") && $streaming_check == "OFF"){
        $sql = "UPDATE `Settings` SET `Status` = 'ON' WHERE `Settings`.`ID` = 1;";  
        $conn->query($sql); 
    } 
    else {
        $sql = "UPDATE `Settings` SET `Status` = 'OFF' WHERE `Settings`.`ID` = 1;"; 
        $conn->query($sql);     
        }
    if((isset($_POST['Autoplay']) == "ON") && $autoplay_check == "OFF"){
        $sql = "UPDATE `Settings` SET `Status` = 'ON' WHERE `Settings`.`ID` = 2;";  
        $conn->query($sql);     
    } 
    else {
        $sql = "UPDATE `Settings` SET `Status` = 'OFF' WHERE `Settings`.`ID` = 2;"; 
        $conn->query($sql); 
    }
    if((isset($_POST['Notification']) == "ON") && $notification_check == "OFF"){
        $sql = "UPDATE `Settings` SET `Status` = 'ON' WHERE `Settings`.`ID` = 3;";  
        $conn->query($sql);     
        } 
    else {
        $sql = "UPDATE `Settings` SET `Status` = 'OFF' WHERE `Settings`.`ID` = 3;"; 
        $conn->query($sql);     
    }
}

header('Location: settings.html');
exit;
    ?>

Я думаю, что php-код все еще неверен в какой-то момент: Когда я переключаю 2 переключателя одновременно, только один переключатель будет включен. Или иногда ни один из них не включается.

Что я хотел, так это, если они переведут тумблер в положение «ON», состояние этого тумблера будет обновлено как «ON». Также тумблер на сайте останется проверенным. Если пользователь переместит тумблер в положение «ВЫКЛ», состояние будет обновлено как «ВЫКЛ», а тумблер на веб-сайте останется без проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...