当前位置:首页 > PHP教程 > php应用 > 列表

php 在处理 form 表单时提交多个 name 属性值相同的 input 标签

发布:smiling 来源: PHP粉丝网  添加日期:2018-08-06 11:13:47 浏览: 评论:0 

一 问题

在公司的开发过程中,遇到了一个问题:如何处理 form 表单提交了多个 name 属性值相同的 input 标签?源码如下(源码是在 form 表单之中的):

  1. <!--{loop$address$index$one}--> 
  2. <divclass="address_item"
  3.    <p> 
  4.     <label> 
  5.     <input type="hidden"name="express_price"value="{$one['express_price']}"/> 
  6.     <input type="hidden"name="state_fare"value="{$one['state_fare']}"/> 
  7.     <input type="hidden"name="id"value="{$one['id']}"/> 
  8.     <input 
  9.   
  10. type="radio"<!--{if$one['default']=='Y'}-->checked<!--{/if}-->name="address"value="{$one['id']}"/><span 
  11.  name="mobile">{$one['mobile']}</span> 
  12.     </label> 
  13.    </p> 
  14. </div> 
  15. <!--{/loop}--> 

二 解决方法

在上述源码中,通过 loop 循环,在 form 表单中生成了多个name属性值相同的 input 元素,当点击提交时,后台的 php  文件使用 $_POST 仅能获取到一个 div 元素中的 input元素传过来的值,但是,radio 类型的 input  元素传过来的值一定是被选中的那一个。据此,修改上述源码中一些 input 元素的相同 name 属性值为数组,再在后台 php 文件通过被选中的  radio 类型的 input 元素的 name 属性值,确定所传过来的整个 div 元素。修改后的代码如下:

  1. <!--{loop$address$index$one}--> 
  2. <divclass="address_item"
  3.    <p> 
  4.     <label> 
  5.     <input type="hidden"name="express_price[]"value="{$one['express_price']}"/> 
  6.     <input type="hidden"name="state_fare[]"value="{$one['state_fare']}"/> 
  7.     <input type="hidden"name="id[]"value="{$one['id']}"/> 
  8.     <input type="radio"<!--{if$one['default']=='Y'}-->checked<!--{/if}-->name="address"value="{$one['id']}"/> 
  9.     <span name="mobile">{$one['mobile']}</span> 
  10.     </label> 
  11.    </p> 
  12. </div> 
  13. <!--{/loop}--> 

php 文件:

  1. $key= 0; 
  2. $address_id=intval($_POST["address"]); 
  3. <a href="/tags.php/foreach/" target="_blank">foreach</a>($_POST['id']as$k=>$v) { 
  4.   if($v==$address_id
  5.      $key=$k
  6. $_POST['express_money'] =$_POST['exporess_price'][$key]; 

以上所述是小编给大家介绍的解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题,希望对大家有所帮助。在此也非常感谢大家对本网站的支持!

Tags: phpform input标签

分享到: