【问题标题】:Variable is not getting stored after submitting the form提交表单后变量未存储
【发布时间】:2019-03-15 08:32:40
【问题描述】:

抱歉,如果标题没有任何意义。 所以,我的代码如下:

<?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
  • 但是你不保存检查状态,所以它总是像我描述的那样工作。将标签行更改为此
  • 因为如果你想通过数据库中的 id 识别它们,你需要做唯一的输入。像
  • 我也更喜欢将表单放在迭代循环之外
  • 数据库中有 ID 行吗?

标签: php html sql forms


【解决方案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>';
    ?>
    

    作为评论的答案。

    【讨论】:

    • 您能否编辑此答案并在这里向我解释!这会很有帮助。
    猜你喜欢
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 2013-06-02
    • 1970-01-01
    • 2013-03-08
    相关资源
    最近更新 更多