PHP中接收数据的三种方式
$_GET:接收GET方式提交的数据
$_POST:提交POST方式提交的数据
$_REQUEST:接收POST或者GET提交的所有数据
这三种方式都是超全局预定义数组,表单元素的”name“属性的值作为数组的下标,而value属性对应的值就是数组的元素值
$_REQUEST所存储数据的内容:将$_post和$_get合并到一个数组
$_request和$_post与$_get的联系:如果get和post中有同名数组元素(下标),post会覆盖get(PHP中数组元素下标具有唯一性),这个可以在php.ini中进行配置
PHP处理复选框数据
复选框表单项的命名方式:
由于复选框通常是将一类内容以同样(同名)的形式传递给后台,数据库存储通常是一个字段存储。复选框的特点:选中才会提交
1、在浏览器端:checkbox的name属性不论什么都会被浏览器毫无保留的提交
2、在PHP中$_POST/$_GET都会对同名name属性进行覆盖
解决方案:浏览器不识别 [] (不认为有特殊性),但在PHP中 [] 该符号被认为是数组的形式,所以PHP就会自动将同名的但是带有 [] 的元素组合到一起形成一个数组。
复选框数据的接收形式:
PHP会自动组合同名元素为数组
复选框数据的常见处理
单选按钮的数据处理
radio button:可以出现多个选择项,但是只能选择其中一个
1、表单中使用的name属性:使用同名
2、后台接收数据也不需要额外处理
3、数据库存储只需要一个字段存储普通数据即可(数字或字符串)
4、PHP拿到数据之后,组织SQL直接存储到数据表即可
多选按钮的数据处理
1、表单中name属性使用数组格式:名字[] (一类复选框数据使用一个)
2、后台接受到数据之后是一个数组(不能存储到数据库)
3、PHP需要将数组转换成指定格式的字符串:使用分隔符分隔每一个元素并且形成字符串:implode( '分隔符' , 数组)
4、PHP组织SQL直接存储到数据库
5、如果需要得到数据,那么在取出数据之后,使用explede把字符串变成数组,语法与implode相同
在HTML显示中,通过判断复选框元素是否在数组中存在,来确定复选框checkbox是否有checked=”checked“属性:in_array()
implode( '分隔符' , 数组):把数组按照分隔符转换成有格式的字符串
$hobby = $_POST['hobby'];
$hobby_string = implode($hobby,'|');
其他常规同名表单项的数据处理
除开radio button 单选框 和 checkbox 复选框,很少会出现同名的表单项,如果非要使用同名的进行管理,那么可以采用checkbox方式进行操作
1、表单中同名增加
2、PHP接收时数组处理
3、PHP转换成有格式的字符串
4、数据库字符串存储
复选框细节:如果复选框没有选中,那么复选框就不会提交。因此在PHP接收使用复选框(单选框)数据的时候,应该先判断是否存在该数据:
$hobby = isset($_post['hobby']) ? $_post['hobby'] : array();