在PHP开发中,表单提交应该非常常用,在所有表单数据中,对于初学者,比较难的恐怕就是复选和多选这种提交数组的处理和上传处理,今天不说上传,就说说处理复选和多选下拉列表。一个复选和多选表单如下
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>php获取 checkbox复选框值的方法</title>
</head>
<body>
<form name="form1" method="post" action="testmultiform.php">
<label>
<input type="checkbox" name="checkbox[]" value="cb1">
复选一
</label>
<label>
<input type="checkbox" name="checkbox[]" value="cb2">
</label>
复选二
<label>
<input type="checkbox" name="checkbox[]" value="cb3">
</label>
复选三
<label>
<input type="checkbox" name="checkbox[]" value="cb4">
</label>
复选四
<label>
<input type="submit" name="Submit" value="提交">
</label>
</form>
</body>
</html>
<?php
if( $_POST )
{
$value = $_POST['checkbox'];
foreach($value as $onevalue){
echo $onevalue;
}
echo '你选择了:'.implode(',',$value);
//由于checkbox属性,我们必须把checkbox复选择框的名字设置为一个如果checkbox[],这样php才能读取,以数据形式,否则不能正确的读取checkbox复选框的值哦。
}
?>
折里[]是php特有的,其他如.net、java是没有的,php如果不加的话是接收不到这些数据的。接收数据$arrc = $_POST['c'];$arrlist = $_POST['list'];这里收到的都是数组,一般不直接存入数据库,而是转换成字符串存入,就像 1,2,3这种形式,对于非数字字符串,存储数据库以后要想显示比较方便,直接读取显示,而对于数字字符串,我们一般有可能用这些数字所代表的id去数据库中充当条件,查询数据,所以使用的时候还要把这些字符串还原成数组,然后通过循环来查询显示。
数组与字符串转换的函数主要就是implode用来转换成字符串,explode用来还原成数组,如果只是存入数据库,serialize函数更好,用来数据序列化存入数据库,取出我们用unserialize来还原成数组,非常方便,这就是两种用来常用处理数组存储到数据库,有没有更好的我不知道,我在开发中就是主要用的这两种。
implode(separator,array) implode() 函数返回由数组元素组合成的字符串。
参数 | 描述 |
---|---|
separator | 可选。规定数组元素之间放置的内容。默认是 ""(空字符串)。 |
array | 必需。要组合为字符串的数组。 |
语法
explode(separator,string,limit) explode() 函数把字符串打散为数组。 注释:"separator" 参数不能是空字符串。
参数 | 描述 |
---|---|
separator | 必需。规定在哪里分割字符串。 |
string | 必需。要分割的字符串。 |
limit | 可选。规定所返回的数组元素的数目。 可能的值:
|