TP入门第八天

[小型留言板-增删查改]

1、先建立数据库lyb,然后建立表lyb_notes

建表代码如下:

CREATE TABLE `lyb_notes` (

`id` int(10) NOT NULL auto_increment,

`title` varchar(100) collate utf8_bin NOT NULL,

`time` varchar(11) collate utf8_bin NOT NULL,

`content` text collate utf8_bin NOT NULL,

`clientip` varchar(15) collate utf8_bin NOT NULL,

PRIMARY KEY  (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;

2、书写入口文件

<?php

//入口文件

//定义核心文件夹、项目名称和路径

define(‘THINKPHP_PATH’,’./ThinkPHP/’);

define(‘APP_NAME’, ‘lyb’);

define(‘APP_PATH’, ‘./lyb/’);

//开启调试模式

define(‘APP_DEBUG’,true);

// 加载框架入口文件

require_once (THINKPHP_PATH.”ThinkPHP.php”);

?>

3、编写配置文件

<?php

if(!defined(‘THINKPHP_PATH’)){echo “非法错误!”;exit;}

return array(

//’配置项’=>’配置值’

//很多选项都是默认配置都可以,这里基本配置项目把用的配置都列举出来了

‘URL_MODEL’=>1,//0是普通模式,1是pathinfo模式(默认配置),2是rewrite模式,3是兼容模式

‘DB_TYPE’               => ‘mysql’,     // 数据库类型

‘DB_HOST’               => ‘localhost’, // 服务器地址

‘DB_NAME’               => ‘lyb’,       // 数据库名

‘DB_USER’               => ‘root’,      // 用户名

‘DB_PWD’                => ‘joyous’,    // 密码

‘DB_PORT’               => ‘3306’,      // 端口

‘DB_PREFIX’             => ‘lyb_’,      // 数据库表前缀

‘DB_CHARSET’            => ‘utf8’,      // 数据库编码默认采用utf8

‘APP_DEBUG’=>true,

);

?>

4、修改index方法

lib/action/里面找到indexaction.class.php

<?php

class IndexAction extends Action {

public function index(){

header(“Content-Type:text/html; charset=utf-8”);

$notes=M(‘Notes’);

$list=$notes->select();

$this->assign(‘title’,’Joyous-小型留言板’);

$this->assign(‘mylist’,$list);

$this->display();

}

//php默认方法为public方法

//增加

function add()

{

$note=M(‘notes’);

if($vo=$note->create()){

$note->time=time();//获取时间

$note->clientip=get_client_ip();//获取客户端ip

if($note->add()){

$this->success(“信息添加成功,返回上一页”);

}else{

$this->error(‘信息添加失败,返回上一页’);

}

}else{

$this->error($note->getError());

}

}

//删除

function del()

{

$note=M(‘Notes’);

if($note->delete($_GET[‘id’])){

$this->success(‘删除成功’);

}else{

$this->error(‘删除失败’);

}

}

//更新

function edi()

{

$note=M(‘Notes’);

$id=(int)$_GET[‘id’];

$list=$note->where(“id=$id”)->find();//这里只要一条信息

$this->assign(‘list’,$list);

$this->assign(‘title’,’修改信息’);

$this->display();

}

//

function update()

{

$note=M(‘notes’);

if($note->create()){

$note->time=time();

if($note->save()){

$this->success(‘更新成功’);

}else{

$this->error(‘更新失败’);

}

}

}

}

5、运行之后提示没有模板

注意:TP3.0的模板省去了default,也就是说直接存在tpl目录下

建立index.html

<html>

<head>

<title>{$title}</title>

</head>

<body>

<form action=”__URL__/add/” method=”post”>

留言标题:<input name=”title” type=”text”><br>

留言内容:<textarea name=”content” cols=”20″ rows=”5″>

</textarea><br>

<input name=”sub”  value=”发布” type=”submit”>

<!–数据库留言列表 –>

<hr><!– 美丽的分割线 –>

<!– 这里说下模板标签volist,其中name的值是在控制器里赋值了,而id是本次循环的临时变量–>

<volist name=’mylist’ id=’vo’>

序号:{$vo[‘id’]}<br>

标题:{$vo[‘title’]}<br>

内容:{$vo.content}<br>

时间:{$vo[‘time’]|date=”Y-m-d”,###} <br>

<a href=’__URL__/del/id/{$vo[‘id’]}’>删除</a> <a href=’__URL__/edi/id/{$vo.id}’>修改 </a>

<hr>

</volist>

</form>

</body>

</html>

建立edi.html

<html>

<head><title>{$title}</title>

<body>

<form action=”__URL__/update” method=”post”>

标题:<input name=’title’ value='{$list.title}’ type=’text’><br>

<input name=’id’ type=’hidden’ value='{$list.id}’>

内容:<input name=’content’ value='{$list.content}’ type=’text’><br>

<input name=’sub’ value=’更新’ type=’submit’>

</form>

</body>

</head></html>

6、疑问讲解

注意:获取ip3.0中可以直接使用(get_client_ip()),不需要导入什么类库

注意:存储的时候我用了time获取时间戳,但是显示的时候用的是date函数,其中

时间:{$vo[‘time’]|date=”Y-m-d”,###}可以查看手册中8.3中使用函数章节进行学习

注意:volist标签是8.9章节知识(随后会详细讲解volist标签)

注意:success.html模板是在tpl目下存放

附:压缩包是所有的代码需要手册的可以去官方下载或者Q

代码示例TP3.0

Tagged , , , , . Bookmark the permalink.

Comments are closed.