【问题标题】:Undefined index html未定义的索引html
【发布时间】:2014-01-07 01:22:19
【问题描述】:

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

嵌套在表单中的复选框 -

<label for="choice1">Windows 7</label>
<input type="checkbox" name="choice1"/>

当用户按下“添加按钮”时,我试图获取该值并将其存储在一个变量中,但它找不到“choice1”。

$choice1=$_POST['choice1'];

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

【问题讨论】:

  • 表单的method 属性是否设置为POST? “添加按钮”是&lt;input type="submit"/&gt; 吗?显示更多代码。
  • 请显示您的整个表单 html,包括添加按钮。
  • 在 PHP 中,尝试echo "&lt;pre&gt;"; var_dump($_POST); var_dump($_GET); echo "&lt;/pre&gt;"; 分析数组 $_POST 和 $_GET 的内容。
  • @jakub: header('Content-Type: text/plain'); var_dump($GLOBALS); ;)

标签: html css checkbox


【解决方案1】:

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

如果不勾选,则不发送。

这样做:

$choice1 = isset($_POST['choice1']) ? $_POST['choice1'] : 0;

【讨论】:

    【解决方案2】:

    这里有两件事可能出错:

    1. 如果表单没有将属性method 设置为post,则在URL 中传递数据(您可以检查是否是这种情况)。在这种情况下,值在 $_GET 而不是 $_POST 中。
    2. 未选中的复选框不传递值。如果复选框被选中,它会传递on(或另一个值,如果你覆盖它)但如果你不这样做,你就不会得到这个值,所以你不能在 PHP 中读取它。您可以使用array_key_exists('choice1', $_POST) 检查该值是否存在。如果不是,您就知道该复选框未选中。

    【讨论】:

      【解决方案3】:
      1. 确保您的表单使用 POST(而不是 GET),否则 $_POST 将为空。例如:
        &lt;form action="foo" method="post"&gt;
      2. 发送print_r($_POST) 以查看$_POST 中是否有任何内容。
      3. 正如马特在 cmets 中所说,确保您有 &lt;input type="submit"&gt; 来实际发送您的表单。

      【讨论】:

        【解决方案4】:

        如果你这样做应该可以:

         <FORM action="your next page" method="post">
            .....
            <label for="choice1">Windows 7</label>
            <input type="checkbox" name="choice1"/>
            .....
            <input type="submit"/>
        
         </FORM>
        

        检查您的代码是否相同... 否则发布更多代码以查看...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-12-08
          • 2012-09-18
          • 1970-01-01
          • 2013-07-19
          • 2013-06-15
          • 2014-11-15
          相关资源
          最近更新 更多