本文实例讲述了PHP实现的简单留言板功能。分享给大家供大家参考,具体如下:
入口文件 文件名 index.php
<?php// 应用入口文件// 检测PHP环境if(version_compare(PHP_VERSION,"5.3.0","<")) die("require PHP > 5.3.0 !");// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为falsedefine("APP_DEBUG",True);//开发调试模式//define("APP_DEBUG",false);//生产模式// 定义应用目录define("APP_PATH","./Message/");// 引入ThinkPHP入口文件require "./ThinkPHP/ThinkPHP.php";// 亲^_^ 后面不需要任何代码了 就是如此简单
配置文件 文件名 config.php
<?phpreturn array( //"配置项"=>"配置值" "SHOW_PAGE_TRACE"=>true, "DB_TYPE" => "mysqli", // 数据库类型 "DB_HOST" => "127.0.0.1", // 服务器地址 "DB_NAME" => "msg", // 数据库名 "DB_USER" => "root", // 用户名 "DB_PWD" => "root", // 密码 "DB_PORT" => "3306", // 端口 "DB_PREFIX" => "ms_", // 数据库表前缀);
控制器 文件名 MsgController.class.php
<?phpnamespace HomeController;use ThinkController;use ThinkModel;class MsgController extends Controller{ public function index(){ $msg = D("Msg"); $info = $msg->order("id DESC")->select(); $this->assign("info",$info); $this->display(); } public function sendMsg(){ $msg = new HomeModelMsgModel(); if (!empty($_POST)){ $data = $msg->create(); if($data){ $data["user_hobby"] = implode(",",$data["user_hobby"]); $z = $msg->add($data); if ($z){ $this->redirect("Msg/sendMsg"); } }else{ $this->assign("errorInfo",$msg->getError()); } } $this->display(); } public function upd($id){ $msg = D("Msg"); if (!empty($_POST)){ $z = $msg->save($_POST); if ($z){ $this->redirect("index",array(),2,"修改成功"); }else{ $this->redirect("upd",array("id"=>$id),2,"修改失败"); } }else{ $info = $msg->find($id); $this->assign("info",$info); $this->display(); } } public function addMsg(){ $msg = D("Msg"); if (!empty($_POST)){ $z = $msg->add($_POST); if ($z){ $this->redirect("index",array(),2,"添加成功"); }else{ $this->redirect("addMsg",array(),2,"添加失败"); } }else{ $this->display(); } } public function del($id){ if(D("Msg")->delete($id)){ $this->success("成功",U("index"),2); }else{ $this->error("失败",U("index"),2); } }}
模板 文件名 MsgModel.class.php
<?phpnamespace HomeModel;use ThinkModel;class MsgModel extends Model{ //是否批量验证 protected $patchValidate = true; protected $_validate = array( array("title","require","标题不能为空!"), //默认情况下用正则进行验证 array("user","require","留言人不能为空!"), array("msg","require","内容不能为空!"), ); protected $_auto = array ( array("status","1"), // 新增的时候把status字段设置为1 array("id","NULL"), array("admin_user","ms"), array("replay","NULL"), array("update_time","time",3,"function"), // 对update_time字段在更新的时候写入当前时间戳 array("send_msg_time","time",3,"function"), );}
视图 文件名 addMsg.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><div> <form action="__SELF__" method="post" > <table border="1" width="100%" class="table_a"> <tr> <td>留言时间</td> <td><input type="text" name="update_time"/></td> </tr> <tr> <td>留言人</td> <td><input type="text" name="user" /></td> </tr> <tr> <td>标题</td> <td><input type="text" name="title" /></td> </tr> <tr> <td>内容</td> <td><input type="text" name="msg" /></td> </tr> <tr> <td>回复</td> <td><textarea name="replay"></textarea></td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" value="添加"> <a href="__CONTROLLER__/index" rel="external nofollow" rel="external nofollow" ><input type="button" value="返回"></a> </td> </tr> </table> </form></div></body></html>
视图 文件名 index.html
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <title>留言列表 -- HoverTree</title> <style> .keleyitable { width: 800px; } .keleyitable table, td, th { border: 1px solid green;margin-top:10px; } .klytd {width:100px;text-align:right } .hvttd { width:500px} </style></head><body><div style="margin:0px auto;" class="keleyitable"><h2>留言列表</h2> <tr><td class="klytd"><a href="__CONTROLLER__/addMsg" rel="external nofollow" >添加</a></td><td class="hvttd"></td></tr> <volist name="info" id="vo"> <table> <tr><td class="klytd">留言时间:</td><td class="hvttd">{$vo.update_time|date="Y-m-d H:i:s",###}</td></tr> <tr><td class="klytd">留言人:</td><td class="hvttd">{$vo.user}</td></tr> <tr><td class="klytd">标题:</td><td class="hvttd">{$vo.title}</td></tr> <tr><td class="klytd">内容:</td><td class="hvttd">{$vo.msg}</td></tr> <tr><td class="klytd">回复:</td><td class="hvttd">{$vo.replay}</td></tr> </table> <tr><td class="klytd"><a href="__CONTROLLER__/upd/id/{$vo.id}" rel="external nofollow" >修改</a></td><td class="hvttd"></td></tr> <tr><td class="klytd"><a href="__URL__/del/id/{$vo.id}" rel="external nofollow" >删除</a></td><td class="hvttd"></td></tr> </volist></div><div style="width:800px;margin:10px auto;font-family:Arial, Helvetica, sans-serif;text-align:center;">HoverTree © 2014 keleyi.com </div><!--最近打算开发一个留言板,asp.net的开源项目,http://hovertree.codeplex.com --></body></html>
视图 文件名 sendMsg.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <form action="" method="post"> 标 题: <input type="text" name="title"><span style="color:red;">{$errorInfo.title}</span><br><br> 信 息: <input type="text" name="msg"><span style="color:red;">{$errorInfo.msg}</span><br><br> 留言人: <input type="text" name="user"><span style="color:red;">{$errorInfo.user}</span><br><br> <input type="submit" value="提交"> </form></body></html>
视图 文件名 upd.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><div> <form action="__SELF__" method="post" > <input type="hidden" name="id" value="{$info.id}"> <table border="1" width="100%" class="table_a"> <tr> <td>留言时间</td> <td><input type="text" name="update_time" value="{$info.update_time}" /></td> </tr> <tr> <td>留言人</td> <td><input type="text" name="user" value="{$info.user}" /></td> </tr> <tr> <td>标题</td> <td><input type="text" name="title" value="{$info.title}" /></td> </tr> <tr> <td>内容</td> <td><input type="text" name="msg" value="{$info.msg}" /></td> </tr> <tr> <td>回复</td> <td><textarea name="replay">{$info.replay}</textarea></td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" value="修改"> <a href="__CONTROLLER__/index" rel="external nofollow" rel="external nofollow" ><input type="button" value="返回"></a> </td> </tr> </table> </form> </div></body></html>
目录结构
数据库 sql语句
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";SET time_zone = "+00:00";/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;/*!40101 SET NAMES utf8 */;---- 資料庫: `msg`---- ------------------------------------------------------------ 表的結構 `ms_msg`--CREATE TABLE IF NOT EXISTS `ms_msg` ( `id` int(10) NOT NULL AUTO_INCREMENT COMMENT "主键", `admin_user` varchar(100) NOT NULL COMMENT "管理员", `update_time` int(10) NOT NULL COMMENT "更新时间", `status` int(2) NOT NULL COMMENT "状态", `send_msg_time` int(10) NOT NULL COMMENT "留言时间", `user` varchar(100) NOT NULL COMMENT "留言人", `title` varchar(100) NOT NULL COMMENT "标题", `msg` varchar(200) NOT NULL COMMENT "内容", `replay` varchar(200) NOT NULL COMMENT "回复", PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT="留言表" AUTO_INCREMENT=19 ;---- 轉存資料表中的資料 `ms_msg`--INSERT INTO `ms_msg` (`id`, `admin_user`, `update_time`, `status`, `send_msg_time`, `user`, `title`, `msg`, `replay`) VALUES(1, "ms", 1479449110, 1, 1479449110, "1", "拉克丝的减肥", "对方科目了", "NULL"),(7, "", 321423432, 0, 0, "kljflwk", "kjsdfnlk", "nlkdsjfn", "kljnf"),(3, "ms", 1479451017, 1, 1479451017, "1", "轻松的发生我", "沃尔沃飞", "NULL"),(8, "ms", 1479544687, 1, 1479544687, "", "qwe", "", "NULL"),(9, "ms", 1479544693, 1, 1479544693, "qwe", "qwe", "qwe", "NULL"),(10, "ms", 1479544970, 1, 1479544970, "qwe", "qwe", "qwe", "NULL"),(11, "ms", 1479544979, 1, 1479544979, "12", "12", "12", "NULL"),(12, "ms", 1479545029, 1, 1479545029, "12", "12", "12", "NULL"),(13, "ms", 1479546357, 1, 1479546357, "12", "12", "12", "NULL"),(14, "ms", 1479547163, 1, 1479547163, "12", "12", "12", "NULL"),(16, "ms", 1479547667, 1, 1479547667, "12", "12", "123", "NULL"),(17, "ms", 2147483647, 1, 1479547682, "上来昆明3", "说的了付款", "蓝山咖啡", "123213");/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。