加入收藏 | 设为首页 | 会员中心 | 我要投稿 驾考网 (https://www.jiakaowang.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP多选下拉列表的处理

发布时间:2023-06-05 13:34:10 所属栏目:PHP教程 来源:
导读:在asp中,多选下拉列表已经被处理成一个数组,如:

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

<option value="news">news</option>

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

在编辑多选框的时候,当从数据库中读取出多选项,如何让有的选项被选中。通过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选项也会被选中。

(编辑:驾考网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章