1

这是一个扩展问题:Get $_POST from multiple checkboxes

我正在尝试获取每个选中复选框的标签,然后将其显示为:

“销售 | 工程”(不带引号)

或者,如果只选择了一个复选框:

“销售量”

HTML (myform.html):

<!DOCTYPE html>
<html>
<head></head>
<body>
<form name='myform' method='post' action='result.php'>
<label for='sales'>Sales</label>
<input type='checkbox' name='loc_chks[]' id='sales' value='Sales' /><br/>

<label for='insideSales'>Inside Sales</label>
<input type='checkbox' name='loc_chks[]' id='insideSales' value='Inside Sales' /><br/>

<label for='engineering'>Engineering</label>
<input type='checkbox' name='loc_chks[]' id='engineering' value='Engineering' /><br/>

<label for='fieldService'>Field Service</label>
<input type='checkbox' name='loc_chks[]' id='fieldService' value='Field Service' /><br/>

<label for='production'>Production</label>
<input type='checkbox' name='loc_chks[]' id='production' value='Production' /><br/>

<label for='warehouse'>Warehouse</label>
<input type='checkbox' name='loc_chks[]' id='warehouse' value='Warehouse'/><br/>
<br/>
<input type='submit' id='subBtn' value='Submit'/>
</form>

</body>
</html>

PHP(结果.php):

 <!DOCTYPE html>
 <html>
 <head></head>
 <body>
    <p><?php 
          if(!empty($_POST["loc_chks"]) and is_array($_POST["loc_chks"])) {
            echo implode(' | ',$_POST["loc_chks"]);
          } else { echo "we have a loser";}

        ?>
    </p>
 </body>
 </html>

*已编辑 - php 文件中的“if”语句始终返回 false,即使选中了多个复选框

4

4 回答 4

2

您应该使用数组类型命名 loc_chks[],这也允许您为每个项目使用特定的键,例如:loc_chks[sales]使用 PHP,您可以在$_POST["loc_chks"]["sales"]
HTML (myform.html) 中使用它:

<label for='sales'>Sales</label>
<input type='checkbox' name='loc_chks[]' id='sales' value='Sales' /><br/>

<label for='insideSales'>Inside Sales</label>
<input type='checkbox' name='loc_chks[]' id='insideSales' value='Inside Sales' /><br/>

<label for='engineering'>Engineering</label>
<input type='checkbox' name='loc_chks[]' id='engineering' value='Engineering' /><br/>

<label for='fieldService'>Field Service</label>
<input type='checkbox' name='loc_chks[]' id='fieldService' value='Field Service' /><br/>

<label for='production'>Production</label>
<input type='checkbox' name='loc_chks[]' id='production' value='Production' /><br/>

<label for='warehouse'>Warehouse</label>
<input type='checkbox' name='loc_chks[]' id='warehouse' value='Warehouse' /><br/>

在 PHP 中,您可以使用implode函数,它可以让您将数组项与粘合字符串(作为第一个参数)
PHP (result.php) 连接起来:

<?php

session_start();

 if(!empty($_POST["loc_chks"]) and is_array($_POST["loc_chks"])) {
     $loc = implode(' | ',$_POST["loc_chks"]);
 }

?>
于 2013-10-04T13:56:37.753 回答
1

缺少值...使用以下

<label for='sales'>Sales</label>
 <input type='checkbox' name='loc_chks[]' id='sales' value='Sales' /><br/>

 <label for='insideSales'>Inside Sales</label>
<input type='checkbox' name='loc_chks[]' id='insideSales' value='Inside Sales' /><br/>

<label for='engineering'>Engineering</label>
<input type='checkbox' name='loc_chks[]' id='engineering' value='Engineering' /><br/>

<label for='fieldService'>Field Service</label>
<input type='checkbox' name='loc_chks[]' id='fieldService' value='Field Service' /><br/>

<label for='production'>Production</label>
<input type='checkbox' name='loc_chks[]' id='production' value='Production' /><br/>

<label for='warehouse'>Warehouse</label>
<input type='checkbox' name='loc_chks[]' id='warehouse' value='Warehouse'/><br/>
于 2013-10-04T13:53:04.210 回答
1

首先将这些标签分配为复选框的值,然后将复选框命名为数组。如果没有像这样命名所有复选框,您将不会像您在循环中所期望的那样获得多个值。

<label for='sales'>Sales</label>
<input type='checkbox' name='loc_chks[]' id='sales' value="Sales"/><br/>
                                     ^^             ^       
于 2013-10-04T13:54:10.030 回答
0

没关系 - 我很笨@$$。我没有关闭表单中的“名称”属性。一切正常 - 谢谢大家的意见。George PHP 有一个稍微好一点的解决方案。

于 2013-10-04T14:18:42.513 回答