1. 表单传值:
即浏览器通过表单元素将用户的选择或者输入的数据提交给后台服务器语言。
2. 表单传值方式
1) GET传值
- form表单
<form method=”GET”>表单元素</form>
2. a标签
<a href=”www.itcast.cn/index.php?学科=PHP”>
3. location对象的href属性
<script>location.href=”www.itcast.cn/index.php?data=PHP”</script>
4. location对象的assign()方法
<script>location.assign(“www.itcast.cn/index.php?data=PHP”)</script>
2) POST传值
<form method=”POST”>表单元素</form>
注:与GET方式的区别:
- GET只是用来获取内容,POST会改变服务器上数据内容
- 传输方式上post必须使用form表单,而get可以使用form表单和URL
- get传输数据可以在URL中对外可见,而post不可见:GET传值最终会在浏览器的地址栏中全部显示:?数据名=数据值&数据名2=数据值2…
- 传输的数据大小不同,get为2K,post理论无限制(事实上,GET和POST本身没有数据长度限制,但是浏览器厂家做了一些限制)
- 传输的数据格式有区别:get传输简单数据(数值/字符串),post可以提交复杂数据(二进制等)
PHP接收数据的三种方式
$_GET方式 | 接收GET方式提交的数据 |
$_POST方式 | 接收POST方式提交的数据 |
$_REQUEST方式 | 接收POST或者GET提交的所有数据 |
注:不管是$_GET/$_POST/$_REQUEST,三个都是PHP超全局(没有范围限制)预定义数组,表单元素的“name”属性的值作为数组的下标,而value属性对应的值就是数组的元素值
$_REQUEST方式:
- 所存储数据的内容:将$_POST和$_GET合并存储到一个数组
- 与$_POST与$_GET的联系:如果GET和POST中有同名数组元素(下标),POST会覆盖GET(PHP中数组元素下标具有唯一性),这个可以在php.ini中进行配置
GET/POST/REQUEST关系
证明在REQUEST中POST会覆盖GET
3. PHP处理复选框数据
1) 复选框表单项的命名方式
复选框:通常是将一类内容以同样(同名)的形式传递给后台,数据库存储通常是一个字段存储。
复选框的特点:选中才会提交
1、 在浏览器端,checkbox的name属性的值不论什么都会被浏览器毫无保留的提交
2、 在PHP中$_POST/$_GET都会对同名name属性进行覆盖
解决方案:浏览器不识别[](浏览器不认为有特殊性),但是PHP认为[]有特殊性:系统自动认为该符号是数组的形式,所以PHP就会自动的将同名的但是带有[]的元素组合到一起形成一个数组
2) 复选框数据的常见处理
- 单选按钮的数据处理
radio button:可以出现多个选择项,但是只能选择其中一个
- 表单中使用的name属性,使用同名即可:只能选中一个
- 后台接收数据也不需要额外处理
- 数据库存储的话只需要一个字段存储普通数据即可(数字或者字符串)
- PHP拿到数据之后,组织SQL直接存储到数据表即可
2. 多选按钮的数据处理
- 表单中name属性使用数组格式:名字[](一类复选框数据使用一个)
- 后台接收到数据之后,是一个数组(数组不能存储到数据库)
- PHP需要将数组转换成指定格式的字符串:使用分隔符分隔每一个元素并且形成字符串:implode(’分隔符’ ,数组)
- PHP组织SQL直接存储到数据库
3. 取出来复选框数据显示
取出数据之后,可使用explode把字符串变成数组
4. 其他常规同名表单项的数据处理
除开单选框和复选框,很少会出现同名的表单项。如果要使用同名的来进行管理,操作:
- 表单中同名增加[]
- PHP接收时数组处理
- PHP转换成有格式的字符串
- 数据库字符串存储
4) 复选框细节
如果复选框没有选中,那么浏览器就不会提交。
因此在PHP接收使用复选框(单选框)数据的时候,应该先判断是否存在该数据