thinkPHP入门(二):基础
2016-04-13 09:38
417 查看
最近正在学习thinkphp,同时博客同步记录学习笔记,但是内容大多都是[1] 提供的文档,所以,强烈建议直接阅读该文档,此文仅作为本人学习记录之用
*在此之前,假设数据库中已经有一张表 think_form 了,具体内容请看[1]
C: create
U: update
R: read
D: delete
在 thinkphp 中,是以控制器的形式来执行基本的业务的。
在[1] 中的例子中,以
首先在
然后在
此时,就可以通过以下链接访问表单页面了:
localhost/xiaojian/html/thinkphp/index.php/home/form/add
(url 不分大小写)
看到这里,相信你都可以通过这个案例,举一反三了,总结出一些规律了。
View 文件夹下以控制器名字命名文件夹,改文件夹下的html 文件是对应控制器的视图文件
当通过PATHINFO 模式访问时,首先服务器会寻找控制器下 add 的操作名,没有则直接渲染同时视图显示。
如果在Form 中添加add 的函数,那么表单就不会出现了,而是执行add 的函数的输出结果。
然后,给Form 类添加insert 操作,用于向数据库插入数据:
而在
由此可以猜想
localhost/xiaojian/html/thinkphp/index.php/home/form
(简直牛逼)
后面就是直接的添加数据了。
在 FormController类中的insert 函数用到了一个 D 函数,这个D 函数呢向我刚才那么直接就add 进数据库,不安全且危险。这里thinkphp 提供了数据验证的方法。
D 函数需要对应 model 类的。所以在/Home/Model/ 下添加
此时如果直接在 add 中提交数据,那么就会得到提示:
:(
标题必须
具体这个验证怎么用,待学。
(要保证数据的绝对安全)
或者:
在FormController类中定义 read 方法:
find 返回值如下:
渲染模板文件如下:
如果你只需要查询某个字段的值,还可以使用getField方法,例如:
在这里也是使用M 方法。
那么在FormController 类中添加两个方法,一个edit, 一个update。
然后就可以通过链接访问:
localhost/app/index.php/home/Form/edit/id/1
与上面的内容大同小异,主要是 save 函数的用法。
同样的,update 也提供了直接内部其他的方法,可以直接去阅读文档。
返回值是是删除的记录数,如果返回值是false则表示SQL出错,返回值如果为0表示没有删除任何数据。
[参考资料]
[1] 快速入门
*在此之前,假设数据库中已经有一张表 think_form 了,具体内容请看[1]
CURD
CURD指的是数据的基本操作:C: create
U: update
R: read
D: delete
创建数据
通过表单
通过表单提交数据是很常见的一种提交数据方式。在 thinkphp 中,是以控制器的形式来执行基本的业务的。
在[1] 中的例子中,以
Form为控制器例子。
首先在
Home/Controller/下创建类:
FormContrller.class.php
<?php namespace Home\Controller; use Think\Controller; class FormController extends Controller{ }
然后在
Home/View/From下添加文件(没有就创建目录):
add.html
<FORM method="post" action="__URL__/insert"> 标题:<INPUT type="text" name="title"><br/> 内容:<TEXTAREA name="content" rows="5" cols="45"></TEXTAREA><br/> <INPUT type="submit" value="提交"> </FORM>
此时,就可以通过以下链接访问表单页面了:
localhost/xiaojian/html/thinkphp/index.php/home/form/add
(url 不分大小写)
看到这里,相信你都可以通过这个案例,举一反三了,总结出一些规律了。
View 文件夹下以控制器名字命名文件夹,改文件夹下的html 文件是对应控制器的视图文件
当通过PATHINFO 模式访问时,首先服务器会寻找控制器下 add 的操作名,没有则直接渲染同时视图显示。
如果在Form 中添加add 的函数,那么表单就不会出现了,而是执行add 的函数的输出结果。
然后,给Form 类添加insert 操作,用于向数据库插入数据:
<?php namespace Home\Controller; use Think\Controller; class FormController extends Controller { public function insert() { $Form = D('Form'); if($Form->create()) { $result = $Form->add(); if($result) { $this->success('数据库添加成功'); } else $this->error('添加数据库错误!'); } else { $this->error($Form->getError()); } } } ?>
而在
add.html中,有:
<FORM method="post" action="__URL__/insert">
由此可以猜想
__URL__其实就是这一段:
localhost/xiaojian/html/thinkphp/index.php/home/form
(简直牛逼)
后面就是直接的添加数据了。
model
*在[1] 中这里叫做模型在 FormController类中的insert 函数用到了一个 D 函数,这个D 函数呢向我刚才那么直接就add 进数据库,不安全且危险。这里thinkphp 提供了数据验证的方法。
D 函数需要对应 model 类的。所以在/Home/Model/ 下添加
FormModel.class.php:
<?php namespace Home\Model; use Think\Model; class FormModel extends Model { //定义自动验证 protected $_validate = array( array('title','require','标题必须'), ); //定义自动完成 protected $_auto = array( array('create_time','time',1,'function'), ); } ?>
此时如果直接在 add 中提交数据,那么就会得到提示:
:(
标题必须
具体这个验证怎么用,待学。
内部提交
数据还支持内部提交:(要保证数据的绝对安全)
$Form = D('Form'); $data['title'] = 'ThinkPHP'; $data['content'] = '表单内容'; $Form->add($data);
或者:
$Form = D('Form'); $Form->title = 'ThinkPHP'; $Form->content = '表单内容'; $Form->add();
读取数据
读取数据使用M函数,通过find 函数实现。在FormController类中定义 read 方法:
public function read($id=0){ $Form = M('Form'); // 读取数据 $data = $Form->find($id); if($data) { $this->assign('data',$data);// 模板变量赋值 }else{ $this->error('数据错误'); } $this->display(); }
find 返回值如下:
array( 'id' => 5, 'title' => '测试标题', 'content' => '测试内容', 'status' => 1, )
渲染模板文件如下:
<table> <tr> <td>id:</td> <td>{$data.id}</td> </tr> <tr> <td>标题:</td> <td>{$data.title}</td> </tr> <tr> <td>内容:</td> <td>{$data.content}</td> </tr> </table>
如果你只需要查询某个字段的值,还可以使用getField方法,例如:
$Form = M("Form"); // 获取标题 $title = $Form->where('id=3')->getField('title');
更新数据
首先,可以建一个视图,把数据库的内容读出来,然后通过表单提交。在这里也是使用M 方法。
那么在FormController 类中添加两个方法,一个edit, 一个update。
public function edit($id=0){ $Form = M('Form'); $this->assign('vo',$Form->find($id)); $this->display(); } public function update(){ $Form = D('Form'); if($Form->create()) { $result = $Form->save(); if($result) { $this->success('操作成功!'); }else{ $this->error('写入错误!'); } }else{ $this->error($Form->getError()); }
然后就可以通过链接访问:
localhost/app/index.php/home/Form/edit/id/1
与上面的内容大同小异,主要是 save 函数的用法。
同样的,update 也提供了直接内部其他的方法,可以直接去阅读文档。
删除数据
删除数据使用delete 的方法:$User = M("User"); // 实例化User对象 $User->where('id=5')->delete(); // 删除id为5的用户数据 $User->delete('1,2,5'); // 删除主键为1,2和5的用户数据 $User->where('status=0')->delete(); // 删除所有状态为0的用户数据
返回值是是删除的记录数,如果返回值是false则表示SQL出错,返回值如果为0表示没有删除任何数据。
[参考资料]
[1] 快速入门
相关文章推荐
- Thinkphp微信支付开发坑
- 支付宝接入Thinkphp
- 七、phpmyadmin安装
- PHP 不使用新变量而交换现有两个变量的值
- PHP 实现字符串翻转(包含中文汉字)
- PHP列出文件目录树
- PHP MSSQL 分页实例(刷新)
- 升级WampServer支持PHP7
- 每天laravel-20160712|Schedule
- 每天laravel-20160712|Schedule
- php 燕十八 观察者模式代码例子
- 五、配置PHP-FPM
- 在ubuntu中配置SSH(问题的解决)sftp的使用
- GetProcAddress 使用注意事项
- zendstudio快捷键
- PHP网页抓取之抓取百度贴吧邮箱数据代码分享
- PHP正则匹配常用案例
- 一看就懂系列之 php中的生产者and消费者模式
- php正则表达式简介
- PHP网页抓取之抓取百度贴吧邮箱数据代码分享