未定义索引html

未定义索引html,html,css,checkbox,Html,Css,Checkbox,我是html新手,所以我不确定哪里出了问题,但我有以下代码(我正在创建一个表单,并在用户按submit时向数据库添加值) 嵌套在表单中的复选框- <label for="choice1">Windows 7</label> <input type="checkbox" name="choice1"/> windows7 当用户按下“添加按钮”时,我试图获取值并将其存储在变量中,但它找不到“choice1” $choice1=$_POST['choice1'

我是html新手,所以我不确定哪里出了问题,但我有以下代码(我正在创建一个表单,并在用户按submit时向数据库添加值)

嵌套在表单中的复选框-

<label for="choice1">Windows 7</label>
<input type="checkbox" name="choice1"/>
windows7
当用户按下“添加按钮”时,我试图获取值并将其存储在变量中,但它找不到“choice1”

$choice1=$_POST['choice1']


但我得到了“未定义索引:choice1”。为什么会这样

这里有两件事可能出错:

  • 如果表单没有将属性
    method
    设置为
    post
    ,则数据将在URL中传递(您可以检查是否存在这种情况)。在这种情况下,值的单位是$\u GET而不是$\u POST
  • 未选中的复选框不会传递值。如果选中该复选框,它将在上传递
    (或者,如果覆盖它,则传递另一个值),但如果不选中,则无法获取该值,因此无法在PHP中读取该值。您可以使用
    array\u key\u exists('choice1',$\u POST)
    检查该值是否存在。如果没有,您知道复选框没有被选中

  • 如果选中该复选框,则浏览器会将其值与其他变量一起发送

    如果没有检查,就不会发送

    这样做:

    $choice1 = isset($_POST['choice1']) ? $_POST['choice1'] : 0;
    
  • 确保表单使用POST(非GET),否则
    $\u POST
    将为空。例如:
  • 执行
    打印($\u POST)
    以查看
    $\u POST
    中是否有任何内容
  • 正如Matt在评论中所说,确保您的
    能够实际发送表单

  • 如果您这样做应该会奏效:

     <FORM action="your next page" method="post">
        .....
        <label for="choice1">Windows 7</label>
        <input type="checkbox" name="choice1"/>
        .....
        <input type="submit"/>
    
     </FORM>
    
    
    .....
    视窗7
    .....
    
    检查您的代码是否相同。。。
    或者我们发布更多代码来查看…

    表单的
    方法
    属性是否设置为
    post
    ?“添加按钮”是否为
    ?显示更多代码。请显示整个表单html,包括添加按钮。在PHP中,尝试
    echo”“;变量转储($\u POST);变量转储(美元获取);回声“
    分析数组$\u POST和$\u GET的内容。@jakub:
    头('Content-Type:text/plain');var_dump(全球美元);)