thinkPHP入门(二):基础

最近正在学习thinkphp,同时博客同步记录学习笔记,但是内容大多都是[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入门(二):基础)