微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP多选下拉列表的处理

在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,,即通过这一步就可以将多选下拉列表中的值整合成,,然后将这个值输入到数据库中,是不是很方便。

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

比如从数据库中slType的值是 “,”,将其赋给$temp,

  <select name="slType[]" id="slType[]" multiple="multiple">

    <option value="news" <? if($count=count(explode(",",$temp)) > 1) { echo "selected";}?>>news</option>

   <option value="product" <? if($count=count(explode(",$temp)) > 1) { echo "selected";}?>>product</option>

   <option value="user" <? if($count=count(explode(",$temp)) > 1) { echo "selected";}?>>user</option>

  </select>

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐