Переменная не сохраняется после отправки формы

#php #html #sql #forms

#php #HTML #sql #формы

Вопрос:

Извините, если заголовок не имеет никакого смысла. Итак, мой код выглядит следующим образом:

 <?php
            $conn=new mysqli("localhost","root","aman8blue","users");
            $conn->connect_error;
            $querynor= mysqli_query($conn,"SELECT * FROM userinfo");
            $nor=mysqli_num_rows($querynor);
            for($i=1; $i<=$nor; $i  ) {
?>

<form method='post'>
    <label class='switch'><input type='checkbox' name='check' value=1 onChange='this.form.submit()'><span class='slider_round'></span></label>
</form>

<?php

$status = 0;

if(isset($_POST['check'])) {
    $status=1;
}


if($status==1) {
    echo "WORKING!";
}
else {
    echo "NOPE!";
}
}
?>
  

Но несмотря ни на что, даже если я отмечу флажок, он показывает «РАБОТАЕТ!». Я не могу понять, где я ошибаюсь.

(Извините, предыдущая была неполной)

Заранее спасибо!

Комментарии:

1. у ваших входных данных отсутствует имя атрибута, добавьте name='check' к своим входным данным, $_POST['check'] получите значение входных данных с помощью name=check , а не id

2. Но вы не сохраняете проверенное состояние, поэтому оно всегда будет работать так, как я описал. Измените строку метки на эту <класс метки =’switch’><тип ввода =’checkbox’ имя =’check’ идентификатор =’check’ значение =1 onChange=’this.form.submit()’ <?php echo (isset($_POST[‘check’]) ? ‘проверено’:»); ?>><span class=’slider_round’></span></label>

3. Потому что вам нужно выполнить уникальные входные данные, если вы хотите распознать их, например, по идентификатору из базы данных. Например <label class=’switch’><input type =’checkbox’ name =’check[0]’ id=’check’ value=1 onChange=’this.form.submit()’ <?php echo (isset($_POST[‘check’][0]) ? ‘проверено’:»); ?>><span class=’slider_round’></span></label>

4. Также я предпочитаю помещать форму вне цикла итерации

5. Есть ли у вас строка идентификатора в базе данных?

Ответ №1:

Добавить

 name="check"
  

в вашем вводе, поскольку post ищет атрибут name, а у вас его нет

Ответ №2:

 <?php
$conn = new mysqli("localhost", "root", "xxxx", "users");
$conn->connect_error;
$querynor = mysqli_query($conn, "SELECT * FROM userinfo");
$nor = mysqli_num_rows($querynor);

echo '<form method='post'>';
for ($i = 1; $i <= $nor; $i  )
    {
    ?>
        <label class='switch'><input type='checkbox' name='check[<?php echo $nor[$i]['id']; ?>]' value=1 onChange='this.form.submit()' <?php echo (isset($_POST['check'][$nor[$i]['id']]) ? 'checked':''); ?>>
            <span class='slider_round'></span>
        </label>
    <?php
    }
echo '</form>';
?>
  

В качестве ответа на комментарий.

Комментарии:

1. Не могли бы вы, пожалуйста, отредактировать этот ответ и объяснить мне здесь! Это было бы большим подспорьем.