通过PHP POST复选框表单


POST checkbox form via PHP

我的表单有一个文本区和一个复选框。当我对结果进行POST时,即使选择了多个复选框值,也只会发布其中一个复选框值。

这是我的表单:

<form action="search.php">
<input type="text" name="term">
<input type="checkbox" name="filter" value="subject"> Subject
<input type="checkbox" name="filter" value="course"> Course
<input type="checkbox" name="filter" value="professor"> Professor
<input type="submit" name="submit" value="Go" />

这是我如何echo的形式(search.php):

<?php
$term = $_GET['term'];
$filter = $_GET['filter'];
echo "$term $filter";
?>

试试这个:

<input type="checkbox" name="filter[]" value="subject" /> Subject
<input type="checkbox" name="filter[]" value="course" /> Course
<input type="checkbox" name="filter[]" value="course" /> Professor

在你的search.php脚本中,提交的'filter'变量将被视为一个数组。

更多信息请看这里:http://us2.php.net/manual/en/faq.html.php#faq.html.arrays

另一个类似的问题,我认为是:HTML输入数组

问题是你分配给每个复选框的名称,目前正在发生的事情是第一个复选框正在被PHP读取,它的值分配给变量,下一个过滤器复选框正在被读取,但随后覆盖变量当前分配的值,然后再次与第三个复选框。因此,您将始终只获得最后选中的复选框作为$filter变量的值。

您需要为每个复选框单独分配一个不同的名称,例如:

<form action="search.php">
<input type="text" name="term" />
<input type="checkbox" name="filter1" value="subject" /> Subject
<input type="checkbox" name="filter2" value="course" /> Course
<input type="checkbox" name="filter3" value="professor" /> Professor
<input type="submit" name="submit" value="Go" />

然后PHP:

<?php
$term = $_GET['term'];
$filter1 = $_GET['filter1'];
$filter2 = $_GET['filter2'];
$filter3 = $_GET['filter3'];
echo "$term $filter1 $filter2 $filter3";
?>

最后一个复选框的值与第二个相同,所以我将course的值更改为professor,如果这实际上是错误的,您显然可以将其更改回来。

另一个注意事项,使用POST方法代替GET方法可能也是一个好主意,因为它更安全,但是,您可能有理由使用GET,但这只是一个提示:)

我想你有三个输入框命名为相同的"过滤器"哪一个是php期望得到?

对于单选按钮我们使用数组过滤器[]所以如果你真的想要复选框并且你真的想要它们都是相同的名字那么试试

<input type="checkbox" name="filter[]" value="subject"/> Subject
<input type="checkbox" name="filter[]" value="course"/> Course
<input type="checkbox" name="filter[]" value="course"/> Professor

然后在PHP中,你会得到一个数组形式的filter。

可能是因为你没有关闭你的输入标签,它把它们当作一个吗?

您还可以为每个复选框使用不同的名称,例如filter_1、filter_2等