PHP多选下拉列表的处理php

/ / 2016-10-10   阅读:2491
在asp中,多选下拉列表已经被处理成一个数组,如:    <select name="slType" id="slType" multiple="multiple">     <option value="news">news</option>    &...
在asp中,多选下拉列表已经被处理成一个数组,如: 
  <select name="slType" id="slType" multiple="multiple">
    <option value="news">news</option>
   <option value="product">product</option>
   <option value="user">user</option>
  </select>
按Ctrl选中news和product选项后,点击提交按钮,用request("slType")返回slType的值,得到news,product。

然而在PHP中,当按住CTRL   多选时, 用$_POST['slType']每次总返回选中的最后一个值,怎么才能取得所有的值?

第一,将多选下拉列表命名为一个数组,如:
  <select name="slType[]" id="slType[]" multiple="multiple">
    <option value="news">news</option>
   <option value="product">product</option>
   <option value="user">user</option>
  </select>

第二,用foreach循环
$temp="," //为什么将temp变量初始化为 “,”,后面说明原因

foreach($_POST['strType']   as   $key=>$value)
  {
   $temp=$temp . $value . ",";
  }

如果多选项被全选,最终$temp返回值为,news,product,user,,即通过这一步就可以将多选下拉列表中的值整合成 ,news,product,user, ,然后将这个值输入到数据库中,是不是很方便。

在编辑多选框的时候,当从数据库中读取出多选项,如何让有的选项被选中。通过explode函数可以很好的解决这个问题。 

比如从数据库中slType的值是 “,product,user,”,将其赋给$temp,
  <select name="slType[]" id="slType[]" multiple="multiple">
    <option value="news" <? if($count=count(explode(",news,",$temp)) > 1) { echo "selected";}?>>news</option>
   <option value="product" <? if($count=count(explode(",product,",$temp)) > 1) { echo "selected";}?>>product</option>
   <option value="user" <? if($count=count(explode(",user,",$temp)) > 1) { echo "selected";}?>>user</option>
  </select>

这样在编辑的时候,product和user选项默认被选中。为什么要在前面加一个“,”,因为这样分割数组的时候准确性要高一些,如果不加这个符号,在分割字符串的时候,将以“user,”作为分割,这样如果数据库中有一个选项为vipuser时,下拉列表在编辑的时候不仅vipuser会被选中,user选项也会被选中。

我要评论

昵称:
验证码:

最新评论

共0条 共0页 10条/页 首页 上一页 下一页 尾页
意见反馈