PHP:无法读取复选框的| $ _GET是空的。为什么?

时间:2014-08-05 14:21:38

标签: php html checkbox get

我只想阅读检查了哪些复选框,但我总是得到索引未定义的消息,而$ _GET则没有。

所以也许你可以告诉我为什么,以及如何解决它。我的PHP代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
      <title>title</title>
</head>

<body>

<form action="checkbox.php">
<input type="hidden" name="sent" value="yes">
<input type="checkbox" name="name[]" value="hello" checked>hello<br>
<input type="checkbox" name="name[]" value="cu"checked>cu<br>
<input type="checkbox" name="name[]" value="test"checked>test<br>
<input type="checkbox" name="name[]" value="test2"checked>test2<br>
<input type="checkbox" name="name[]" value="bond"checked>bond<br>
<input type="submit">
</form>

<?php
error_reporting(E_ALL);
var_dump($_GET);
print_r($_GET["sent"]);
     $sent = $_GET['sent'];                     
     $name = $_GET['name']; 

     if ($sent == 'yes') {
             $name_test = implode(', ',$name);

            print_r($name_test);
     }
?>
</body>
</html>

如果我在windows cmd中运行脚本,使用xampp我得到以下响应:

PS C:\xampp\php> php-cgi G:\1\checkbox.php
X-Powered-By: PHP/5.5.11
Content-type: text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
      <title>title</title>
</head>

<body>

<form action="checkbox.php">
<input type="hidden" name="sent" value="yes">
<input type="checkbox" name="name[]" value="hello" checked>hello<br>
<input type="checkbox" name="name[]" value="cu"checked>cu<br>
<input type="checkbox" name="name[]" value="test"checked>test<br>
<input type="checkbox" name="name[]" value="test2"checked>test2<br>
<input type="checkbox" name="name[]" value="bond"checked>bond<br>
<input type="submit">
</form>

array(1) {
["G:\1\checkbox_php"]=>
string(0) ""
}
<br />
<b>Notice</b>:  Undefined index: sent in <b>G:\1\checkbox.php</b> on line <b>22</b><br   />
<br />
<b>Notice</b>:  Undefined index: sent in <b>G:\1\checkbox.php</b> on line <b>23</b><br />
<br />
<b>Notice</b>:  Undefined index: name in <b>G:\1\checkbox.php</b> on line <b>24</b><br />

</body>
</html>

我无法理解为什么$ _GET变量中没有任何内容。这段代码就是一个例子。我在德国的教程网站上找到了它。

http://aktuell.de.selfhtml.org/artikel/php/checkboxen/

我通过复制代码来测试它,只需为你更改名称。

2 个答案:

答案 0 :(得分:0)

猜猜这是你想要的输出。

你的php是这样的

    <?php
error_reporting(E_ALL);

if(isset($_GET["sent"]))
{

     $sent = $_GET['sent'];                      

     if ($sent == 'yes') {
if(isset($_GET['name'])){
echo "<h2> These boxes were checked</h2>";
      foreach($_GET['name'] as $name)
{
echo $name . "<br />";
}
}
else
 echo "nothing was checked";

     }
}
?>

当您点击提交时,它会给出您想要的结果。

答案 1 :(得分:0)

您遇到的错误是因为在您第一次加载脚本时$_GET为空,直到您提交表单$_GET['sent']并且$_GET['name']将分配值我已做出此修复它有效:)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
      <title>title</title>
</head>

<body>

<form action="checkbox.php">
<input type="hidden" name="sent" value="yes">
<input type="checkbox" name="name[]" value="hello" checked>hello<br>
<input type="checkbox" name="name[]" value="cu"checked>cu<br>
<input type="checkbox" name="name[]" value="test"checked>test<br>
<input type="checkbox" name="name[]" value="test2"checked>test2<br>
<input type="checkbox" name="name[]" value="bond"checked>bond<br>
<input type="submit">
</form>

<?php
if (array_key_exists('sent', $_GET) || array_key_exists('name', $_GET))
{
error_reporting(E_ALL);
var_dump($_GET);
print_r($_GET["sent"]);
     $sent = $_GET['sent'];                     
     $name = $_GET['name']; 

     if ($sent == 'yes') {
             $name_test = implode(', ',$name);

            print_r($name_test);
     }
}
?>
</body>
</html>