基于think PHP6.0框架(控制器-模型-HTML),服务器:
文件目录如下:
mysql 数据库表名为tb_msg,phpstrom中datebase.php文件连数据库:
控制器Lyb.php
<?php
namespace app\controller;
use app\BaseController;
use app\Model\Msg;
use think\facade\Db;
use think\facade\View;
use think\Request;
class Lyb extends BaseController
{
protected $Msg;
public function __construct(Msg $Msg)
{
$this->Msg = $Msg; // 将Msg模型实例赋值给属性
}
// 获取留言列表
public function index()
{
$list = $this->Msg->getList();
$count = $list->total();
return view::fetch('index/msg_list', ['list' => $list, 'count' => $count]);
}
// 删除留言
public function delete($mid)
{
// 调用模型删除数据
$result = $this->Msg->deleteById($mid);
if ($result) {
return redirect('index/msg_list');
} else {
return '删除失败';
}
}
// 添加留言
public function add(Request $request)
{
if ($request->isPost()) {
$data = [
'uname' => $request->param('uname'),
'content' => $request->param('content'),
'pubTime' => date('Y-m-d H:i:s'),
];
$result = $this->Msg->add($data);
if ($result) {
return redirect('index/msg_list');
} else {
return redirect('index/msg_add');
}
} else {
return view('index/msg_add');
}
}
// 编辑留言
public function update(Request $request, $mid)
{
if ($request->isPost()) {
// 接收数据
$data = [
'uname' => $request->param('uname'),
'content' => $request->param('content'),
'pubTime' => date('Y-m-d H:i:s'),
];
// 调用模型更新数据
$result = $this->Msg->updateById($mid, $data);
if ($result) {
// 更新成功
return redirect('index/msg_list');
} else {
return redirect('index/msg_update');
}
} else {
$msg = $this->Msg->getById($mid);
if ($msg) {
return view('index/msg_update', ['msg' => $msg]);
} else {
return '留言不存在';
}
}
}
}
模型Msg.php
<?php
namespace app\Model;
use think\facade\Db;
use think\Model;
class Msg extends Model
{
// 设置当前模型对应的数据表名
protected $name = 'Msg';
// 插入留言
public function add($data)
{
$result = $this->insert($data);
return $result ? $this->getLastInsID() : false;
}
//获取留言列表
public function getList($limit = 3)
{
$list = Db::name('msg')
->order('mid', 'asc')
->paginate($limit); // 分页查询
return $list;
}
// 获取留言
public function getById($mid)
{
$msg = $this->where('mid', $mid)
->find();
return $msg;
}
// 更新留言
public function updateById($mid, $data)
{
$result = $this->where('mid', $mid)
->update($data);
return $result;
}
// 删除留言
public function deleteById($mid)
{
$result = $this->where('mid', $mid)->delete();
//删除后,更新mid
$messages = Db::name('msg')->select();
$newMid = 1;
foreach ($messages as $message) {
// 更新mid
Db::name('msg')->where('mid', $message['mid'])->update(['mid' => $newMid]);
$newMid++;
}
// 提交事务
Db::commit();
return $result;
}
}
添加页面msg_add.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>留言板</title>
</head>
<body>
<h1>添加留言</h1>
<!-- 留言提交表单 -->
<form action="/index.php/Lyb/add" method="post">
姓名: <input type="text" name="uname" ><br><br>
留言内容:<br><textarea name="content"
required style="width: 400px; height: 100px;" >
</textarea><br>
<input type="submit" value="提交" onclick="return alert('添加成功(点击确定后返回留言列表)')"><br>
</form>
</body>
</html>
更新页面msg_update.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>update</title>
</head>
<body>
<h2>编辑留言</h2>
<form action="/index.php/Lyb/update?mid=" method="post">
<input type="hidden" name="mid" value="{$msg.mid}">
<div>
<label for="uname">用户名:</label><br>
<input type="text" id="uname" name="uname" value="{$msg.uname}" required><br>
</div>
<div>
<label for="content">内容:</label><br>
<textarea id="content" name="content"
required style="width: 400px; height: 100px;" >{$msg.content}
</textarea><br><br>
</div>
<div>
<input type="submit" value="更新" onclick="return alert('添加成功(点击确定后返回留言列表)')"><br>
</div>
</form>
</body>
</html>
留言列表msg_list.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>留言列表</title>
</head>
<body>
<h2>留言列表</h2>
<table border="1">
<tr>
<th>ID</th>
<th>用户名</th>
<th>留言内容</th>
<th>留言时间</th>
<th>操作</th>
</tr>
{volist name="list" id="Msg"}
<tr>
<td>{$Msg.mid}</td>
<td>{$Msg.uname}</td>
<td>{$Msg.content}</td>
<td>{$Msg.pubTime}</td>
<td>
<a href="/index.php/Lyb/update?mid={$Msg.mid}">更新留言</a>
<a href="/index.php/Lyb/delete?mid={$Msg.mid}" onclick="return confirm('确定删除吗?')">删除留言</a>
</td>
</tr>
{/volist}
</table>
<br><a href="/index.php/Lyb/add">添加留言</a>
<div class="pagination">{$list->render()|raw}</div>
<!-- 显示总记录数 -->
<p>总记录数:{$count}</p>
</body>
</html>
运行结果: