PHP(2)复选框表单传值

PHP(2)复选框表单传值

复选框:通常是将一类内容以同样(同名)的形式传递给后台,数据库储存通常是一个字符储存。选中才会提交,不选不会提交。

<!DOCTYPE html>
<html>
	<head>
    	<title>"测试"</title>
    	<meta charset="utf-8">
    </head>
	<body>
		<form method="post" action="./index.php?">
        	<input type="checkbox" name="hobby" value="basketball"/>basketball
        	<input type="checkbox" name="hobby" value="football"/>football
        	<input type="checkbox" name="hobby" value="pingpang"/>pingpang
            <input type="submit" value="提交"/>
        </form>
        
	</body>
</html>
<?php
	//接收数据
	echo'<pre>';
	var_dump($_GET);//get方式提交的数据
	echo'<hr>';
	var_dump($_POST);//post方式提交的数据
	echo'<hr>';
	var_dump($_REQUEST);
?>


在这里插入图片描述
我们选中了两个,后台却只提交了一个,是因为键值对中的关键值具有唯一性,两个选项的name属性相同,后面的会将前面的覆盖。


复选框的命名方式

1.在浏览器端,checkbox的name属性的值不论什么都会被浏览器毫无保留的提交
2.在PHP中$_POST、$_GET都会对同名的name属性进行覆盖。
解决方案
浏览器不认为[](浏览器不认为有特殊性),但是PHP认为[]有特殊性,系统自动认为该符号时数组的形式,所以PHP就会自动的将同名的但是带有[]的元素组合到一起形成一个数组。

<!DOCTYPE html>
<html>
	<head>
    	<title>"测试"</title>
    	<meta charset="utf-8">
    </head>
	<body>
		<form method="post" action="./index.php?">
        	<input type="checkbox" name="hobby[]" value="basketball"/>basketball
        	<input type="checkbox" name="hobby[]" value="football"/>football
        	<input type="checkbox" name="hobby[]" value="pingpang"/>pingpang
            <input type="submit" value="sub"/>
        </form>
	</body>
</html>
<?php
	//接收checkbox数据
	header('Content-type:text/html;charset=utf-8');//告诉浏览器当前服务器返回的内容是text/html,同时需要浏览器用utf-8字符集解析
	echo'<hr>';
	var_dump($_POST);
?>

在这里插入图片描述

PHP处理复选框数据

1、单选按钮的数据处理
Radio button:可以出现多个选项,但是只能选择其中一个
(1)表单中使用name属性,使用同名即可;只能选中一个。
(2)后台接收数据也不需要额外处理。
(3)数据库储存的话只需要一个字段储存普通数据即可(数字或者字符串)
在这里插入图片描述
在这里插入图片描述
(4)PHP拿到数据之后组织SQL直接储存到数据表即可。
2.多选框的数据处理
· (1)表单中name属性使用数组格式,名字[](一类复选框数据使用一个)。
(2)后台接收到数据之后,是一个数组(数组不能储存到数据库)。
(3)PHP需要将数组转换成指定格式的字符串;使用分隔符分隔每一个元素并且形成字符串。
implode(数组,‘分隔符’),将数组转化为字符串,元素之间分隔符分隔。
(4)PHP组织SQL直接存储到数据库。

<?php
	//将复选框内容储存到数据库
	
	//表示设计
	/*
		id	name	gender	hobby
		1	mark 	男		篮球,足球,乒乓球		
	*/
	header('Content-type:text/html;charset=utf-8');
	$hobby=implode($_POST['hobby'],',');
	print_r($hobby);
?>

在这里插入图片描述
(5)如果是取出操作,那么取出数据之后使用explode字符串变成数组。
(6)在HTML显示中,通过判断复选框元素是否在数组中存在,来确定复选框checkbox是否有checked=“checkbox”属性;in_array()函数判断一个元素是否存在在一个数组中。
3、其他常规同名表单项的数据处理
(1)除开radio button 单选框和checkbox复选框,很少会出现同名的表单项。如果非要使用同名的来进行管理,那么可以采用checkbox方式进行操作。

复选框细节

如果复选框没有选中,那么浏览器就不会提交,这样会引起错误,因此在PHP接收使用数据的时候,应该先判断是否存在该数据。
在这里插入图片描述
可以使用isset()函数判断不为空。

<?php
	//将复选框内容储存到数据库
	
	//表示设计
	/*
		id	name	gender	hobby
		1	mark 	男		篮球,足球,乒乓球		
	*/
	header('Content-type:text/html;charset=utf-8');
	$hobby=isset($_POST['hobby'])?$_POST['hobby']:array();
	$hobby_string=implode($hobby,',');
	echo $hobby_string;
?>
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值