php核心编程

三种接收方式
$_GET
$_POST
$_REQUEST

表单元素必须要使用name元素才能不服务器接收
使用request方式post会覆盖get

<?php
//接收数据
//超全局预定于数组
//直接使用?name=values
echo '<pre>';
var_dump($_GET);
echo '<hr>';

echo '<pre>';
var_dump($_POST);
echo '<hr>';

//使用request接收数据时,如果遇到同名数组,post覆盖get
echo '<pre>';
var_dump($_REQUEST);
echo '<hr>';
/*
使用post传值的时候必须要使用name,在网站中创建一个下标
*/

?>

在浏览器端不管多选框checkbox的name是什么都会被浏览器提交
在php中post和get会对name属性覆盖

解决方案
浏览器不认为[]有特殊性但是php认为[]有特殊性
在前端中添加[],在php中会认为这是一个数组只是用户没有添加索引
也就是没有添加下标,php会自动添加从0开始到结束

<html>
<head></head>
<body>
<form method="POST" action="01.php">
	<input type="checkbox" name="hobby[]" value="basketball">basketball
	<input type="checkbox" name="hobby[]" value="pp">pp
	<input type="checkbox" name="hobby[]" value="aa">aa
	<input type="submit" name="ti" value="">
</form>
</body>
</html>

复选框数据常见处理

单选按钮的数据处理
多个选项只能选一个
表单中使用name属性,使用同名即可,因为只会上传一个
后台接收数据不需要额外处理
数据库存储只需要一个字段存储数据
checked="checked" 默认选中

多选框怎么处理数据
表单中的name属性使用数组格式:名字[]
后台接收到数据后,是一个数组
php需要将数组转换为字符串才能储存到数据库
implode(要分割的数组,‘分隔符’)
$str=implode($gend,',');

字符串转换数组
explode(',',$字符串名);

checkbox可以使用重名操作
1.表单中同名添加[]
2.php接收时按照数组处理
3.php转换有格式的字符串
4.数据库按照字符串储存

先进行判断是否为空
isset($_POST[])?$_POST['']:array();
 

<?php
$gend=isset($_POST['hobby'])?$_POST['hobby']:array();
//$gend=$_POST['hobby'];
print_r($gend);
echo "<hr/>";
$str=implode($gend,',');
echo $str,"<br/>";
var_dump(explode(',', $str));
?>

猜你喜欢

转载自blog.csdn.net/Lonelyhat/article/details/91862601