解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
一 问题
在公司的开发过程中,遇到了一个问题:如何处理 form 表单提交了多个 name 属性值相同的 input 标签?源码如下(源码是在 form 表单之中的):
<!--{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 元素。修改后的代码如下:
<!--{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 文件:
$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];
相关推荐
TONIYH 2020-06-11
huha 2020-10-16
TLROJE 2020-10-26
echoes 2020-08-20
nercon 2020-08-01
zhanghaibing00 2020-06-28
Aveiox 2020-06-25
henryzhihua 2020-06-21
zhoutaifeng 2020-06-17
liangzhouqu 2020-06-16
开心就好 2020-06-10
x青年欢乐多 2020-06-06
KyrieHe 2020-06-03
bertzhang 2020-06-02
haokele 2020-05-29
niehanmin 2020-05-28
davidliu00 2020-05-26