thinkphp表单提交问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp表单提交问题相关的知识,希望对你有一定的参考价值。

<form id="form1" name="form1" method="get" action="__URL__/category">
这样写提交表单后是不是应该到了category? 可为什么我在首页提交后还在首页呢?

参考技术A action="__URL__/category 是提交到当前模块的category方法下。然后在category方法下验证,具体要返回哪个页面,就要看你这个方法是怎么写的了。没看到你的源码,也不知道俱体原因。 参考技术B form表单穿的值是到category这个方法中,进行这个方法下的操作,操作成功或失败后,会跳转,这就要看你写的跳转到哪里了 参考技术C 只要看一下模板生成的缓存,看一下到底现在的提交地址是什么,就能清楚问题所在了 参考技术D LZ action语法有些错,要提交到category只要action=“category”这样即可 第5个回答  2013-04-16 __URL__/category 跟 category 是没有什么区别的 啊

thinkPHP--CURD操作

1.数据创建 2.数据写入 3.数据读取 4.数据更新 5.数据删除

一.数据创建 在数据库添加等操作之前,我们首先需要对数据进行创建。何为数据创建,就是接受提 交过来的数据,比如表单提交的 POST(默认)数据。接受到数据后,还可以对数据进行有 效的验证、完成、生成等工作。

//根据表单提交的POST数据,创建数据对象 $user = M(\'User\'); var_dump($user->create()); PS:这里 create()方法就是数据创建,数据的结果就是提交的 POST 数据的键值对。

特别注意的是:提交过来的字段和数据表字段是对应的,否则无法解析。

//通过数组手工获取数据,覆盖提交的 $user = M(\'User\'); $data[\'user\'] = $_POST[\'user\']; $data[\'email\'] = $_POST[\'email\']; $data[\'date\'] = date(\'Y-m-d H:i:s\');

//和数据表对应,否则无效 var_dump($user->create($data));

//通过对象手工获取数据,覆盖提交的 $user = M(\'User\'); $data = new \\stdClass(); $data->user = $_POST[\'user\']; $data->email = $_POST[\'email\']; $data->date = date(\'Y-m-d H:i:s\'); var_dump($user->create($data));

//默认是$_POST,传递$_GET修改 $user = M(\'User\'); var_dump($user->create($_GET)); create()方法可以传递第二个参数,将要操作的模式,有两种:Model::MODEL_INSERT 和 Model::MODEL_UPDATE,即新增和修改。当没有指定的时候,系统会根据数据源是否包 含主键来自动判断,如果包含主键,则就是修改操作。

//设置将要新增操作 $user = M(\'User\'); var_dump($user->create($_POST, Model::MODEL_INSERT));

create()方法的内部工作分为 9 步:

复制代码
1.获取数据源(默认是 POST);

2.验证数据合法性(非数据或对象会过滤),失败则返回 false;

3.检查字段映射;

4.判断数据状态(新增还是修改);

5.数据自动验证,失败则返回 false;

6.表单令牌验证,失败则返回 false;

7.表单数据赋值(过滤非法字段和字符串处理);

8.数据自动完成;

9.生成数据对象(保存在内存)。
复制代码

create()方法可以配合连贯操作配合数据创建,支持的连贯操作有:

复制代码
1.field,用于定义合法的字段;  var_dump($user->field(\'user\')->create());

2.validate,用于数据自动验证;

3.auto,用于数据自动完成;

4.token,用于令牌验证。

//限制可操作的字段 $user = M(\'User\'); var_dump($user->field(\'user\')->create());

//在模型类里限制字段 class UserModel extends Model { protected $insertFields = \'user\'; protected $updateFields = \'user\'; }
复制代码

 

二.数据写入 数据写入使用的是 add()方法。

//新增一条数据 $user = M(\'User\'); $data[\'user\'] = \'李炎恢\'; $data[\'email\'] = \'yc60.com@gmail.com\'; $data[\'date\'] = date(\'Y-m-d H:i:s\'); $user->add($data);

//结合create()方法 $user = M(\'User\'); $data = $user->create(); $data[\'date\'] = date(\'Y-m-d H:i:s\'); $user->add($data); add()方法支持的连贯操作有:

1.table,定义数据表名称;

2.data,指定要写入的数据对象;

3.field,定义要写入的字段;

4.relation,关联查询;

5.validate,数据自动验证;

6.auto,数据自动完成;

7.filter,数据过滤;

8.scope*,命名范围;

9.bind,数据绑定操作;

10.token,令牌验证;

11.comment,SQL 注释; //使用data连贯方法 $user = M(\'User\'); $data = $user->create(); $data[\'date\'] = date(\'Y-m-d H:i:s\'); $user->data($data)->add(); //data连贯方法 支持字符串、数组、对象 $user = M(\'User\'); $data = \'user=星矢&mail=xinshi@qq.com&date=\'.date(\'Y-m-d H:i:s\'); $user->data($data)->add(); 

三.数据读取

在之前的课程中,我们已经大量使用了数据读取的功能,比如 select()方法。

结合各 种连贯方法可以实现数据读取的不同要求,支持连贯的方法有:

1.where,查询或更新条件;

2.table,要操作的数据表名称;

3.alias,数据表别名;

4.field,查询字段;

5.order,结果排序;

6.group,查询分组;

7.having,分组再查询;

8.join,多表链接查询;

9.union,合并 SELECT;

10.distinct,取唯一值;

11.lock,锁;

12.cache,缓存;

13.relation,关联查询;

14.result,数据转换;

15.scope,命名范围;

16.bind,数据绑定操作;

17.comment,SQL 注释。

//显示默认第一条数据 $user = M(\'User\'); var_dump($user->find());

//可以传递数字参数,AR 模式

//显示默认所有数据 $user = M(\'User\'); var_dump($user->select());

//可以传递数组形式的 SQL //获取第一条user字段的值 $user = M(\'User\'); var_dump($user->getField(\'user\'));

//获取所有user字段的值 $user = M(\'User\'); var_dump($user->getField(\'user\',true));  

//传递多个字段,获取所有 $user = M(\'User\'); var_dump($user->getField(\'user,email\'));  //重复的没有了

//id冒号分隔 $user = M(\'User\'); var_dump($user->getField(\'id,user,email\',\':\'));

//限制2条数据 $user = M(\'User\'); var_dump($user->getField(\'id,user,email\',2));

四.数据更新

数据更新使用的方法是 save()方法,主要是对数据的修改操作。

//修改第一条数据 $user = M(\'User\'); $data[\'user\'] = \'蜡笔大新\'; $data[\'email\'] = \'daxin@qq.com\'; $map[\'id\'] = 1; $user->where($map)->save($data);

//成功后返回 1,否则 0

//默认主键为条件 $user = M(\'User\'); $data[\'id\'] = 1; $data[\'user\'] = \'蜡笔小新\'; $data[\'email\'] = \'xiaoxin@163.com\'; $user->save($data);

数据更新的 save()方法支持的连贯方法有:

1.where,查询或更新条件;

2.table,要操作的数据表名称;

3.alias,数据表别名;

4.field,查询字段;

5.order,结果排序;

6.lock,锁;

7.relation,关联查询;

8.scope,命名范围;

9.bind,数据绑定操作;

10.comment,SQL 注释。

//结合create() $user = M(\'User\'); $user->create();

//POST必须包含主键 $user->save();

//修改某一个值 $user = M(\'User\'); $map[\'id\'] = 1; $user->where($map)->setField(\'user\', \'蜡笔大新\');

//统计累计,累加累减 $user = M(\'User\'); $map[\'id\'] = 1; $user->where($map)->setInc(\'count\',1);

//累加,setDec 累减

五.数据删除

数据删除使用的方法是 delete()方法。

//直接删除主键(id=17) $user = M(\'User\'); $user->delete(17);

//根据ID来删除 $user = M(\'User\'); $map[\'id\'] = 16; $user->where($map)->delete();

//批量删除多个 $user = M(\'User\'); $user->delete(\'1,3,5\');

//删除count为0且按时间倒序的前五个 $user = M(\'User\'); $map[\'count\'] = 0; $user->where($map)->order(array(\'date\'=>\'DESC\'))->limit(5)-> delete();

//删除所有数据,谨慎 $user = M(\'User\'); echo $user->where(\'1\')->delete();

delete()方法支持的连贯操作有: 1.where,查询或更新条件; 2.table,要操作的数据表名称; 3.alias,数据表别名; 4.order,结果排序; 5.lock,锁; 6.relation,关联查询; 7.scope,命名范围; 8.bind,数据绑定操作; 9.comment,SQL 注释。

六.ActiveReocrd 模式

这种模式最大的特别就是简化了 CURD 的操作,并且采用对象化的操作方式,便于使用 和理解。

//添加一条数据 $user = M(\'User\'); $user->user = \'火影忍者\'; $user->email = \'huoyin@qq.com\'; $user->date = date(\'Y-m-d H:i:s\'); $user->add();

//结合create $user = M(\'User\'); $user->create(); $user->date = date(\'Y-m-d H:i:s\'); $user->add();

//找到主键为4的值 $user = M(\'User\'); var_dump($user->find(4));

//查找user=蜡笔小新的记录 $user = M(\'User\'); var_dump($user->getByUser(\'蜡笔小新\'));

//输出user echo $user->user;

//通过主键查询多个 $user = M(\'User\'); var_dump($user->select(\'1,2,3\'));

//修改一条数据 $user = M(\'User\'); $user->find(1); $user->user = \'蜡笔老新\'; $user->save();

//删除当前找到的数据 $user = M(\'User\'); $user->find(11); $user->delete();

//删除主键为10的数据 $user = M(\'User\'); $user->delete(10);

//删除主键为10,11的数据 $user = M(\'User\'); $user->delete(\'10,11\');

七.字段映射

字段映射可以将表单里的 name 名称对应到数据表里的字段,这样防止系统自动屏蔽掉 不对应的 POST 值。

//字段映射 protected $_map = array( \'xingming\'=>\'user\', \'youxiang\'=>\'email\', );

//字段映射获取 $user = D(\'User\'); var_dump($user->create());

以上是关于thinkphp表单提交问题的主要内容,如果未能解决你的问题,请参考以下文章

表单提交后用history.back()的问题(本人用thinkPHP)

thinkphp5如何将表单提交的数据作为条件进行递归查询?

ThinkPHP 中 form 表单用 get 提交会直接跳到首页,这个需要在哪里进行啥设置?

Thinkphp5.0 html表单提交

thinkphp3.2.3 怎么上传form表单

ThinkPHP提交表单判断上传图片经验总结