目录
表单传值
表单传值概念:
GET传值:
POST传值:
post跟get方式的区别:
php接受数据的三种方式
php处理复选框数据
复选框表单项的命名方式
复选框数据的常见处理
1. 单选按钮的数据处理
2. 多选按钮的数据处理
复选框细节
表单传值表单笔记:html .4 列表 表单_ThnPkm的博客-CSDN博客
表单传值概念:浏览器通过表单元素将用户的选择或者输入的数据提交给后台服务器语言.
为什么使用表单传值?
动态网站的特点就是后台根据用户的需求定制数据.所谓的"需求"就是用户通过当前的选择或者输入的数据信息,表单就是这些数据的承载者.
GET传值:1. form表单
表单元素
2. a标签
3. JS location对象的href属性
location.href="site.com/index.php?data=php"
4.JS location对象的assign()方法
location.assign("site.com/index.php?data=php")
POST传值:
只有一种: form表单
表单元素
post跟get方式的区别:
- get传输的数据主要用来获取数据,不改变服务器上资源:get只用来获取数据
- post传输的数据主要用来增加数据,改变服务器上资源:post会改变服务器上数据内容
- 传输方式上post必须使用form表单,而get可以使用form表单和url
- get传输数据可以在url中对外可见,而post不可见:get传值会在浏览器地址栏上全部显示.: ?数据名=数据值&数据名2=数据值2...
http://url?name1=value1&name2=value2……
- get和post能传输的数据大小不同.get为2k,post理论上无限制.(事实上get和post本身没有数据长度限制,但是浏览器厂家做了限制)
- get和post能够传输的数据格式有区别: get传输简单数据(数值/字符串);post可以提交复杂数据(二进制等)
$_GET,$_POST,$_REQUEST三个都是php超全局预定义数组,表单元素的"name"属性的值作为数组的下标,而value属性对应的值就是数组的元素值
$_GET方式:接收get方式提交的数据
$_POST方式::接收post方式提交的数据
$_REQUEST方式:接收post或get提交的所有数据
$_REQUEST所存储数据的内容:将$_GET和$_POST合并存储到一个数组
应避免get和post同时存在相同name属性,否则$_REQUEST中post会覆盖get的数据.
复选框:通常是将一类内容以同样(同名)的形式传递给后台,数据库存储通常是一个字段存储.
复选框的特点:选中才会提交.(没选中不会提交)
1. 在浏览器端,checkbox的name属性的值不论什么都会被浏览器毫无保留的提交.
2. 在php后台中,$_POST和$_GET都会对同名name属性进行覆盖(如果有重名)
解决方案:浏览器不识别[](浏览器不认为有特殊性),但是PHP认为[]有特殊性:系统自动认为该符号是数组的形式,所以php就会自动的将同名的但是带有[]的元素组合到一起形成一个数组.
如上图代码,用户点击了篮球和乒乓球,后台php接受到POST数据.注意同名name属性须跟[],以便PHP系统自动将同名name属性归入1个数组中去..
复选框数据的常见处理 1. 单选按钮的数据处理radio button:多个选择项,但只能选1个.
①name属性使用同名即可,因为只能选中1个,所以不会造成重复name属性提交;
②后台接受数据也不用额外处理;
③数据库存储只需要1个字段存储普通数据即可(数字或者字符串)
如上图.如果单选按钮中至少必须让用户选择一项,则可设置默认选项,即指定属性checked="checked"
④php拿到数据后,组织sql直接存储到数据表即可
2. 多选按钮的数据处理①表单中那么属性使用数组:名字加[](一组复选框使用一个名字[])
②后台接收到数据之后,是1个数组(数组不能存储到数据库),
③php需要将数组转换成指定格式的字符串:使用分隔符分隔每一个元素并且形成字符串.
④php组织sql存储到数据库中
⑤补充:如果需要取出该数据,则可以使用explode函数,将该字符串变成数组....
如上图代码,用户点击了复选框(name="hobby[]")里的篮球和足球选项,递交给后台php,.php代码首先获得hobby数组,然后将hobby数组每个元素用分隔符分隔,再合并成一个字符串$hobby_string(此时该用户的兴趣字符串是:篮球|足球).这时候就可以存入数据库中了.
假设我们从数据库里取出"兴趣"字段(字符串),使用explode将兴趣字符串分割为数组.,代码如下图.
*复选框不选中就提交,就就不会产生该数据的数组(例如$_POST['hobby']),此时就会出错..因此在php接收复选框(单选框)数据的时候,应该先判断是否存在该数据,如果存在则接收,不存在则令其等于空数组,请使用如下代码.假如代码直接写成$hobby=$_POST['hobby'];就可能因为用户没点任何一项,不存在$_POST['hobby']而出错!
函数 isset():测变量是否设置
isset()函数使用