繁体   English   中英

通过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/zh/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";
?>

您还将最后一个复选框的值与第二个复选框的值相同,因此我将其值从课程更改为教授,如果这实际上是错误的,则显然可以将其更改回去。

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

我认为您有3个输入框,它们都命名为相同的“过滤器”,而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_1,filter_2等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM