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