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

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

<?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!";
}
}
?>

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

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

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

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

user1334621 15.03.2019 09:34

Я не могу воспроизвести проблему. Код ведет себя так, как ожидалось, когда я его тестирую.

Quentin 15.03.2019 09:39

я не вижу кнопку отправки, поэтому я предполагаю, что это вызов ajax, я прав? Отправьте затем данные вызова ajax. --- Редактировать --- упс this.form.submit() не обращайте внимания на мой комментарий

Dorvalla 15.03.2019 09:40

Вы не видите кнопку отправки, но в флажке есть form.submit.

Michał Szałapski 15.03.2019 09:41

Извините, но это весь код

Aman Raizada 15.03.2019 09:41

Подождите... вы добавляете свой код после? измените порядок и поместите код обработки php над выводом html. Возможно, это не решение вашей проблемы, однако, если вы повторно используете этот статус для чего-то еще после этого флажка, может быть удобно иметь эту переменную готовой

Dorvalla 15.03.2019 09:42

Скажи мне, что мне нужно отредактировать :/

Aman Raizada 15.03.2019 09:43

На самом деле этот код всегда будет показывать РАБОТУ. Форма причины будет отправлена, только если вы нажмете флажок

Michał Szałapski 15.03.2019 09:43

Но он должен отображать «Работает», когда флажок установлен, и «Нет», когда его нет.

Aman Raizada 15.03.2019 09:44

Но вы не сохраняете проверенное состояние, поэтому оно всегда будет РАБОТАЕТ, как я описал. Измените строку метки на эту <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>

Michał Szałapski 15.03.2019 09:46

то ваш оператор else находится не в том месте, он должен быть включен if (isset($_POST['check'])) , а не if ($status==1)

Alex 15.03.2019 09:48

Михал Салапски, я отредактировал его так же, как и ваш, но теперь, если мы уберем одну галочку, все они покажут эффект, и наоборот.

Aman Raizada 15.03.2019 09:50

Моя проблема ЕЩЕ не решена

Aman Raizada 15.03.2019 09:54

Потому что вам нужно делать уникальные входные данные, если вы хотите распознать их, например, по идентификатору из базы данных. Как <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>

Michał Szałapski 15.03.2019 09:57

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

Michał Szałapski 15.03.2019 10:00

Мужчина! не работает, тот же результат. Не могли бы вы уточнить в ответах, это было бы очень полезно.

Aman Raizada 15.03.2019 10:01

Мне нужна форма внутри цикла, потому что мне нужно несколько полей ввода

Aman Raizada 15.03.2019 10:01

У вас есть строка идентификатора в базе данных?

Michał Szałapski 15.03.2019 10:02

Да, конечно

Aman Raizada 15.03.2019 10:03
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
19
55
2

Ответы 2

Добавить

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>';
?>

Как ответ на комментарий.

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

Aman Raizada 15.03.2019 10:03

Другие вопросы по теме