PHP处理复选框数据
复选框表单项的命名方式
复选框:通常是将一类内容以同样(同名)的形式传递给后台,数据库存储通常是一个字段存储。
复选框的特点:选中才会提交
1、在浏览器端:checkbox的name属性的值不论什么都会被浏览器毫无保留的提交
2、在PHP中$_POST/$_GET都会对同名name属性进行覆盖
解决方案:浏览器不识别[](浏览器不认为有特殊性),但是php认为[]有特殊性:系统自动认为该符号是数组的形式,所以php就会自动的将同名的但是带有[]的元素组合到一起形成一个数组
<form method="post" action="">
<input type="checkbox" name="hobby[]" value="basketball">basketball
<input type="checkbox" name="hobby[]" value="fottball">fottball
<input type="checkbox" name="hobby[]" value="pingpong">pingpong
<input type="submit" name="" value="提交">
</form>
复选框数据的接收形式
php会自动组合同名元素的[]为数组
复选框数据的常见处理
1、单选按钮的数据处理
Radio button:可以出现多个选择项,但是只能选择其中一个
①表单中使用的name属性,使用同名即可:只能选中一个
②后台接受数据也不需要额外处理
③数据库存储的话只需要一个字段存储普通数据即可(数字或者字符串)
<input type="radio" name="genter" value="1" checked="checked">男
<input type="radio" name="genter" value="2">女
④php拿到数据之后,组织SQL直接存储到数据表即可
2、多选按钮的数据处理
①表单中name属性使用数组的形式:名字[](如图1,一类复选框数据使用一个)
②后台接收到数据之后,是一个数组(数组不能存储到数据库)
③php需要将数组转换成指定格式的字符串:使用分隔符分隔每一个元素并且形成字符串implode(数组,‘分隔符’)
④php组织SQL直接存储到数据表
取出来复选框数据显示:
⑤如果是反过来操作,那么取出数据之后使用explode把字符串变成数组
②在html显示当中,通过判断复选框元素是否在数组中存在,来确定复选框checkbox是否有checked=checked属性:in_array()
3、其他常规同名表单的数据处理
除开radio button单选框和checkbox复选框,很少会出现同名的表单项。如果非要使用同名的来进行管理,那么可以采用checkbox方式进行操作
1、表单中同名增加[]
2、php接收时数组处理
3、php转换成有格式的字符串
4、数据库字符串存储
复选框细节
如果复选框没有选中,那么浏览器就不会提交,因此在PHP接收使用复选框(单选框)数据的时候,应该先判断是否存在该数据。