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] 快速入门

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值