一 问题
在公司的开发过程中,遇到了一个问题:如何处理 form 表单提交了多个 name 属性值相同的 input 标签?源码如下(源码是在 form 表单之中的):
1
2
3
4
5
6
7
8
9
10
11
12
|
<!--{loop $address $index $one }--> <div class = "address_item" > <p> <label> <input type= "hidden" name= "express_price" value= "{$one['express_price']}" /> <input type= "hidden" name= "state_fare" value= "{$one['state_fare']}" /> <input type= "hidden" name= "id" value= "{$one['id']}" /> <input type= "radio" <!--{ if $one [ 'default' ]== 'Y' }-->checked<!--{/ if }-->name= "address" value= "{$one['id']}" /><span name= "mobile" >{ $one [ 'mobile' ]}</span> </label> </p> </div> <!--{/loop}--> |
二 解决方法
在上述源码中,通过 loop 循环,在 form 表单中生成了多个name属性值相同的 input 元素,当点击提交时,后台的 php 文件使用 $_POST 仅能获取到一个 div 元素中的 input元素传过来的值,但是,radio 类型的 input 元素传过来的值一定是被选中的那一个。据此,修改上述源码中一些 input 元素的相同 name 属性值为数组,再在后台 php 文件通过被选中的 radio 类型的 input 元素的 name 属性值,确定所传过来的整个 div 元素。修改后的代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<!--{loop $address $index $one }--> <div class = "address_item" > <p> <label> <input type= "hidden" name= "express_price[]" value= "{$one['express_price']}" /> <input type= "hidden" name= "state_fare[]" value= "{$one['state_fare']}" /> <input type= "hidden" name= "id[]" value= "{$one['id']}" /> <input type= "radio" <!--{ if $one [ 'default' ]== 'Y' }-->checked<!--{/ if }-->name= "address" value= "{$one['id']}" /> <span name= "mobile" >{ $one [ 'mobile' ]}</span> </label> </p> </div> <!--{/loop}--> |
php 文件:
1
2
3
4
5
6
7
|
$key = 0; $address_id = intval ( $_POST [ "address" ]); foreach ( $_POST [ 'id' ] as $k => $v ) { if ( $v == $address_id ) $key = $k ; } $_POST [ 'express_money' ] = $_POST [ 'exporess_price' ][ $key ]; |
以上所述是小编给大家介绍的解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:http://www.cnblogs.com/afee666/archive/2017/05/11/6841745.html