合作&赞助



管理员登录
用户名:
密 码:
技术文章 > PHP

thinkphp留言板 (三) 数据操作
Description:为了提升一层次,决定尝试thinkphp开发个项目. 不过咱啥也不懂,先看看实例。。。
Source Url:http://hi.baidu.com/waterjiang/blog/item/0b65073adbbefbf8b311c727.html

前台搭建完了后自然是编码,写程序了。前台已经做出来了整系统个大思路肯定是出来了的。

1)数据库:

CREATE TABLE `u_liuyan` (
`id` int(10) NOT NULL auto_increment,
`name` varchar(20) character set utf8 collate utf8_bin NOT NULL,
`email` varchar(20) character set utf8 collate utf8_bin NOT NULL,
`qq` varchar(20) character set utf8 collate utf8_bin NOT NULL,
`title` varchar(45) NOT NULL,
`con` varchar(20) character set utf8 collate utf8_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

2)进行数据库操作。

1,配置数据库。

在conf文件夹下面建立一个config.php文件,填充:

<?php
return array(
"DB_TYPE" =>'mysql',
"DB_HOST" =>'localhost',
"DB_NAME" =>'liuyan',
"DB_USER" =>'root',
"DB_PWD" =>'',
"DB_PREFIX" =>'u_', //表的前缀
)
?>

2,数据操作

a)在LIb/Model下面建立一个 LiuyanModel.class.php 的文件夹,里面代码:

class LiuyanModel extends Model
{

}

这样以来我们就可以对数据进行操作了。

命名是:要操作的数据表名+Model.class.php。

b)在INdexAction.calss.php中新加入如下代码(蓝色为新加代码):

class IndexAction extends Action{
public function index(){
$this->display();
}

public function insert()
{
$User = D("Liuyan");
$User->create();
$User->add(); 
}

public function verify() //这个函数是成验证码的,和入库操作无关。
{
import("ORG.Util.Image");
Image::buildImageVerify();
}

}

这时回忆一下在add.html里面的表单提交的action="__URL__/insert",既是提交到这里insert()函数来处理。

这样,往数据里插入数据就已经实现,但很明显我们不能让用户任意玩数据库里插数据,还得进行数据过滤。

c),过滤数据。回到LiuyanModel.class.php,新加入代码:

class LiuyanModel extends Model
{
//过滤表单
protected $_validate = array(
array('name','require','留言人姓名必须!',1), 
array('email','email ','邮箱格式错误','2'), 
array('qq','number','请输入正确的QQ'),
array('title','require','主题不能为空',1),
array('con','require','内容不能为空',1),
array('ma','checkma','验证码错误',0,'callback'),

);

//验证验证码
public function checkma()
{
return md5($_POST['ma']) == $_SESSION['verify'];
}
}

thinkphp内置了数据对象的自动验证功能,需要使用系统的自动验证功能,只需要在Model类里面定义$_validate属性,支持的验证因子格式:

验证条件
EXISTS_TO_VAILIDATE 或者0 存在字段就验证(默认)
MUST_TO_VALIDATE 或者1 必须验证
VALUE_TO_VAILIDATE或者2 值不为空的时候验证

使用规则:手册里的数据验证有详细说明。


然后需要在INdexAction.class.php里进行一个报错操作。

class IndexAction extends Action{
public function index(){
$this->display();
}

public function insert()
{
$User = D("Liuyan");
if($User->create())
{
$User->add();
}else
{
  $this->error($User->getError());
}
}

public function verify()
{
import("ORG.Util.Image");
Image::buildImageVerify();
}
}


这样,发表留言就出来了。


然后就是我们要获取验证表单时的错误提示,我们需在default建立一个public文件夹,在在文件下面建立一个success.html文件。我们随便建一个表格吧。


<table width="299" border="0" align="center">
<tr>
<td align="center">{$error}</td> //获取错误提示
</tr>
<tr>
<td align="center">{$message}</td> //获取成功提示
  </tr>
<tr>
<td align="center">点击 <a href="{$jumpUrl}">这里</a> 跳转</td>//上一页
</tr>
</table>

这样我们在发布留言时,有验证错误就会提示错误。

这样,整个发布留言就完成了!



使用时间:0.0130898952484 秒