Zend Framework实现具有基本功能的留言本(附demo源码下载)
本文实例讲述了zend framework实现具有基本功能的留言本。分享给大家供大家参考,具体如下:
一个留言本...具有的基本功能就是.1.发表留言. 2.回复留言.3.管理留言(修改,删除等操作).
我这里只是写了基本的操作,比如加留言验证码.页面的美化什么的我都
没有做.我只是给大家一个思想..很多东西要靠我们自己去学了.
另一个就是我的留言用了ajax.就是你一发表.数据就会在页面显示..不过大家要了解jquery的ajax的用法..我相信大部分人都会这个js类库吧.
要是不懂也没关系..你们可以改成不是ajax的..只要把发表留言的from的提交动作转换成我们控制里的一个动作..相信这个不是问题.好了..开始工作:
我们的目录结构和以前一样,大致不变..下面要有改动的..大家也不要急..我会教大家如何做:
第一:先建立好我们的模板页面(view)..
按照上篇教程的目录.application/views/scripts目录下有一些模板页.如(index.phtml,edit.phtml).我们删除它们..现在加一个message文件夹.
在message里加上(edit.phtml,index.phtml,message.phtml)三个模板文件.完成后.我们在application/views/scripts/目录下加上(header.phtml,footer.phtml)二个模板文件.
因为这二个文件以后会重用来..所以把他们直接放到application/views/scripts/下..好了模板建立好了.现在就是加入一个html.js.image了.我把他们这些都放在网站根目录public文件夹下.大家可以对应我的源码来看一下..要是有点乱..请大家根据源码来看这教程..(^_^不好意思,我只能这样表达.我也不知道如何写才能让你们更了解.请大家体谅啊!)
第二:接下来,我们写我们的数据层程序(model).
1.我们在原来的表中加上下面几个字段:pid(标志是否是回复,0为留言.为为0的是为回复) ,author(留言者),headimg(留言者头像),email(留言者电子邮件), ip(留言者ip地址),
show(留言是否显示.这个要在生台管理能用.这教程这里没有用到.), addtime(留言时间), updatetime(留言修改时间).字段类型的设置请大家看源码sql文件.
2.我们在application/models/目录下有一个message.php.我们先写好我们留言本的model .主要是对留言本数据层的操作.我增加了下面几个方法:
getallmessage(取到所有的留言) , getallremessage(取到所有的回复留言数据) , getmessagebyid(根据id取留言数据), updatemessagebyid(修改留言), delmessagebyid(删除留言)
具体程序如下(程序上面也有注解):
class message extends zend_db_table { protected $_name ="message"; protected $_primary = 'id'; /* * 取到所有的留言 */ public function getallmessage(){ $messagearray=$this->fetchall("message.pid=0", "message.id desc")->toarray(); return $messagearray; } /* * 取到所有的回复留言数据 */ public function getallremessage(){ $rearray=$this->fetchall("message.pid!=0", "message.id desc")->toarray(); return $rearray; } /* * 根据id取留言数据 */ public function getmessagebyid($id){ $messageone=$this->fetchall('id='.$id)->toarray(); return $messageone; } /* * 修改留言 */ public function updatemessagebyid($array,$id){ $db = $this->getadapter(); $where=$db->quoteinto('id = ?', $id); $this->update($array, $where); } /* * 删除留言 */ public function delmessagebyid($id){ $where = 'id = ' . $id; $this->delete($where); return true; } }
第三:完成上面二项.最后就我们的控制层了(controller).打开application/controllers/indexcontroller.php这个控制器..把原来的不要的东西给删除了.我在上面加上了下面
一个message方法(也叫动作action).不过其它的action都有改动..请大家参与源码来进行分析.这里我只贴也我新加入的messageaction这个方法(代码上都有注解.请自行查看.谢谢):
public function messageaction() { if($this->_request->ispost()){ zend_loader::loadclass('zend_filter_striptags'); $filter=new zend_filter_striptags(); $username=$filter->filter($this->_request->getpost('username')); $email=$filter->filter($this->_request->getpost('email')); $content=$filter->filter($this->_request->getpost('content')); $title=$filter->filter($this->_request->getpost('title')); $messageid=$filter->filter($this->_request->getpost('messageid')); $headimg=$filter->filter($this->_request->getpost('headimg')); $message=new message(); $db=$message->getadapter(); if($username!=''&&$email!=''&&$messageid!=''&&$content!=''){ require_once 'zend/validate/emailaddress.php'; $validator = new zend_validate_emailaddress(); if ($validator->isvalid($email)) { //取ip地址..这里只是简单取ip $ip=$_server ["remote_addr"]; $data=array( 'title'=>$title, 'author'=>$username, 'pid'=>$messageid, 'headimg'=>$headimg, 'email'=>$email, 'show'=>'1', 'content'=>$content, 'ip'=>$ip, 'addtime'=>time(), 'updatetime'=>time() ); $message->insert($data); $db->lastinsertid(); unset($data); //取到所有留言getallmessage,getallremessage //二个方法在model(message.php)里定义的 $this->view->messages=$message->getallmessage(); //取到所有回复数据 $this->view->arrreviews=$message->getallremessage(); $this->view->flag='0'; $this->view->message='您的留言发表成功!'; echo $this->view->render('message/message.phtml'); } else { $this->view->flag='5'; $this->view->message='对不起!您填写有电子邮箱地址有误!'; echo $this->view->render('message/message.phtml'); } }elseif($username==''){ $this->view->flag='1'; $this->view->message='对不起!您的大名不能为空!'; echo $this->view->render('message/message.phtml'); }elseif($messageid==''){ $this->view->flag='2'; $this->view->message='对不起!回复留言编号不能为空!'; echo $this->view->render('message/message.phtml'); }elseif($content==''){ $this->view->flag='3'; $this->view->message='对不起!您填写的留言内容不能为空!'; echo $this->view->render('message/message.phtml'); } }else{ echo $this->view->render('message/index.phtml'); } }
只是没有验证码以及分页功能..后面一篇会有教程进一步讲解.
总结:到这里就完成了一个留言本的编写.当然很简单的功能..还是那句话.我只是把我会的写给大家..只是一个思想..我也只会这些..所以写的好与不好..请大家自己进行权衡
完整实例代码点击此处。
更多关于zend相关内容感兴趣的读者可查看本站专题:《zend framework框架入门教程》、《php优秀开发框架总结》、《yii框架入门及常用技巧总结》、《thinkphp入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于zend framework框架的php程序设计有所帮助。
推荐阅读
-
Zend Framework实现具有基本功能的留言本(附demo源码下载)
-
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
-
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
-
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)_php实例
-
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)_php实例
-
Zend Framework实现留言本分页功能(附demo源码下载)_php实例
-
Zend Framework实现具有基本功能的留言本(附demo源码下载)_php实例
-
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)_PHP
-
Zend Framework实现留言本分页功能(附demo源码下载)_PHP
-
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载),zenddemo