PHP多选下拉列表的处理php
在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选项也会被选中。
<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选项也会被选中。
上一篇:php时间比较
下一篇:提高PHP编程效率的53个要点
最新评论
热门推荐
我要评论