Извините, если заголовок не имеет никакого смысла. Итак, мой код выглядит следующим образом:
<?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!";
}
}
?>
Но несмотря ни на что, даже если поставить галочку, то показывает "РАБОТАЕТ!". Я не могу понять, где я не прав.
(извините, предыдущая была неполной)
Заранее спасибо!
Я не могу воспроизвести проблему. Код ведет себя так, как ожидалось, когда я его тестирую.
я не вижу кнопку отправки, поэтому я предполагаю, что это вызов ajax, я прав? Отправьте затем данные вызова ajax. --- Редактировать --- упс this.form.submit() не обращайте внимания на мой комментарий
Вы не видите кнопку отправки, но в флажке есть form.submit.
Извините, но это весь код
Подождите... вы добавляете свой код после? измените порядок и поместите код обработки php над выводом html. Возможно, это не решение вашей проблемы, однако, если вы повторно используете этот статус для чего-то еще после этого флажка, может быть удобно иметь эту переменную готовой
Скажи мне, что мне нужно отредактировать :/
На самом деле этот код всегда будет показывать РАБОТУ. Форма причины будет отправлена, только если вы нажмете флажок
Но он должен отображать «Работает», когда флажок установлен, и «Нет», когда его нет.
Но вы не сохраняете проверенное состояние, поэтому оно всегда будет РАБОТАЕТ, как я описал. Измените строку метки на эту <label class='switch'><input type='checkbox' name ='check' id='check' value=1 onChange='this.form.submit()' <?php echo (isset ($_POST['check']) ? 'проверено':''); ?>><span class='slider_round'></span></label>
то ваш оператор else находится не в том месте, он должен быть включен if (isset($_POST['check'])) , а не if ($status==1)
Михал Салапски, я отредактировал его так же, как и ваш, но теперь, если мы уберем одну галочку, все они покажут эффект, и наоборот.
Моя проблема ЕЩЕ не решена
Потому что вам нужно делать уникальные входные данные, если вы хотите распознать их, например, по идентификатору из базы данных. Как <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>
Также я предпочитаю помещать форму вне цикла итераций.
Мужчина! не работает, тот же результат. Не могли бы вы уточнить в ответах, это было бы очень полезно.
Мне нужна форма внутри цикла, потому что мне нужно несколько полей ввода
У вас есть строка идентификатора в базе данных?
Да, конечно






Добавить
name = "check"
в вашем вводе, так как сообщение ищет атрибут имени, а у вас его нет
<?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>';
?>
Как ответ на комментарий.
Не могли бы вы отредактировать этот ответ и объяснить мне здесь! Это было бы большим подспорьем.
имя отсутствующего атрибута ввода, добавьте
name='check'к вашему вводу,$_POST['check']получите значение ввода с помощьюname=check, а неid