PHP實現的簡單留言板功能示例【基於thinkPHP框架】

這篇文章主要介紹了PHP實現的簡單留言板功能,結合實例形式分析了基於thinkPHP框架實現的留言板相關配置、數據庫操作、sql語句等實現技巧與操作注意事項,需要的朋友可以參考下

本文實例講述了PHP實現的簡單留言板功能。分享給大家供大家參考,具體如下:

入口文件  文件名 index.php

<?php
// 應用入口文件
// 檢測PHP環境
if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !');
// 開啓調試模式 建議開發階段開啓 部署階段註釋或者設爲false
define('APP_DEBUG',True);//開發調試模式
//define('APP_DEBUG',false);//生產模式
// 定義應用目錄
define('APP_PATH','./Message/');
// 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php';
// 親^_^ 後面不需要任何代碼了 就是如此簡單

配置文件 文件名 config.php

<?php
return 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

<?php
namespace Home\Controller;
use Think\Controller;
use Think\Model;
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 \Home\Model\MsgModel();
    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

<?php
namespace Home\Model;
use Think\Model;
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程序設計有所幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章