這兩天幫別人做了一個增刪改查,我想著記錄下來也好:
目錄結構
在thinkphp/library/think/View.php文件里修改模板路徑然后寫到頁面頭文件中

在database.php修改數據庫:

下面貼出頁面代碼:
add.html:
~~~
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>添加學生信息</title>
<link rel="stylesheet" href="__ADMIN__/layui/css/layui.css">
<script src="__ADMIN__/layui/layui.all.js"></script>
<script>
;!function () {
//無需再執行layui.use()方法加載模塊,直接使用即可
var form = layui.form
, layer = layui.layer;
//…
}();
</script>
</head>
<body>
<form method="post" action="{:url('add')}">
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-inline">
<input type="hidden" name="id">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">學號框</label>
<div class="layui-input-inline">
<input type="text" name="number" required lay-verify="required" placeholder="請輸入學號" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">姓名框</label>
<div class="layui-input-inline">
<input type="text" name="name" required lay-verify="required" placeholder="請輸入姓名" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">性別框</label>
<div class="layui-input-inline">
<label class="layui-btn layui-btn-warm"><input type="radio" name="sex" value="男">男</label>
<label class="layui-btn layui-btn-warm"><input type="radio" name="sex" value="女">女</label>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">年齡框</label>
<div class="layui-input-inline">
<input type="text" name="banji" required lay-verify="required" placeholder="請輸入性別" class="layui-input">
</div>
</div>
<!--<div class="layui-form-item">-->
<!--<label class="layui-form-label">年齡框</label>-->
<!--<div class="layui-input-inline">-->
<!--<input type="text" name="nianl" required lay-verify="required" placeholder="請輸入班級" class="layui-input">-->
<!--</div>-->
<!--</div>-->
<div class="layui-form-item">
<label class="layui-form-label">地址框</label>
<div class="layui-input-inline">
<input type="text" name="frmali" required lay-verify="required" placeholder="請輸入家庭住址" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">聯系框</label>
<div class="layui-input-inline">
<input type="text" name="phone" required lay-verify="required" placeholder="請輸入聯系方式" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button type="submit" class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button>
</div>
</div>
</form>
</body>
</html>
~~~
edit.html:
~~~
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>學生信息修改</title>
<link rel="stylesheet" href="__ADMIN__/layui/css/layui.css">
<script src="__ADMIN__/layui/layui.all.js"></script>
<script>
;!function () {
//無需再執行layui.use()方法加載模塊,直接使用即可
var form = layui.form
, layer = layui.layer;
//…
}();
</script>
</head>
<body>
<form method="post" action="{:url('update')}">
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-inline">
<input type="hidden" value="{$student.id}" name="id">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">學號框</label>
<div class="layui-input-inline">
<input type="text" name="number" value="{$student.number}" required lay-verify="required" placeholder="請輸入學號" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">姓名框</label>
<div class="layui-input-inline">
<input type="text" name="name" value="{$student.name}" required lay-verify="required" placeholder="請輸入姓名" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">性別框</label>
<div class="layui-input-inline">
<label class="layui-btn layui-btn-warm"><input type="radio" name="sex" value="男">男</label>
<label class="layui-btn layui-btn-warm"><input type="radio" name="sex" value="女">女</label>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">年齡框</label>
<div class="layui-input-inline">
<input type="text" name="banji" value="{$student.banji}" required lay-verify="required" placeholder="請輸入班級" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">地址框</label>
<div class="layui-input-inline">
<input type="text" name="frmali" value="{$student.frmali}" required lay-verify="required" placeholder="請輸入家庭住址" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">聯系框</label>
<div class="layui-input-inline">
<input type="text" name="phone" value="{$student.phone}" required lay-verify="required" placeholder="請輸入聯系方式" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button type="submit" class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button>
</div>
</div>
</form>
</body>
</html>
~~~
index.html:
~~~
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<link rel="stylesheet" href="__ADMIN__/layui/css/layui.css">
<script src="__ADMIN__/layui/layui.all.js"></script>
<script>
;!function () {
//無需再執行layui.use()方法加載模塊,直接使用即可
var form = layui.form
, layer = layui.layer;
//…
}();
</script>
<title>學生管理系統</title>
</head>
<body>
<table class="layui-table">
<colgroup>
<col width="150">
<col width="200">
<col>
</colgroup>
<thead>
<tr>
<th>序號</th>
<th>學號</th>
<th>姓名</th>
<th>性別</th>
<th>班級</th>
<th>家庭住址</th>
<th>聯系方式</th>
<th>添加時間</th>
<th>數據操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="data" key="key"}
<tr>
<td>{$key}</td>
<td>{$data.number}</td>
<td>{$data.name}</td>
<td>{$data.sex}</td>
<td>{$data.banji}</td>
<td>{$data.frmali}</td>
<td>{$data.phone}</td>
<td>{$data.time}</td>
<td><a class="layui-btn layui-btn-radius layui-btn-danger" href="{:url('delete?id=' . $data->getData('id'))}"><i class="glyphicon glyphicon-trash"></i> 刪除</a><a class="layui-btn layui-btn-radius" href="{:url('edit?id=' . $data->getData('id'))}"><i class="glyphicon glyphicon-trash"></i> 編輯</a></td>
</tr>
{/volist}
</tbody>
</table>
<a href="{:url('tianjia')}" class="layui-btn layui-btn-normal">添加學生信息</a>
</body>
</html>
~~~
控制器代碼
Index.php:
~~~
<?php
namespace app\index\controller;
use think\Controller;
use think\Db;
use think\Request;
use app\index\controller\User as UserModel;
use think\Validate;
class Index extends Controller
{
/**
* @return mixed
* @throws \think\exception\DbException
* 首頁模板數據
*/
public function index()
{
// 獲取用戶列表
$list = UserModel::all();
// $info = Db::table('user');
// $user = $info->where('id',1)->select();
// $data[''] = $user;
// 模板變量賦值
$this->assign('list',$list);
// dump($data);
// $this->assign('data', data($user));
// 模板渲染
return $this->fetch('index');
}
/**
* @param string $id
* @throws \think\exception\DbException
* 刪除數據
*/
public function delete($id = ''){
// $id = $request->param('id');
// 讀取用戶id數據
$student = UserModel::get($id);
// 刪除數據
if ($student->delete()){
$this->success('刪除成功');
}else{
$this->error('刪除失敗',$student->getError());
}
}
/**
* @param string $id
* @return mixed
* @throws \think\exception\DbException
* 渲染添加數據模板
*/
public function edit($id = ''){
// 讀取數據
$student = UserModel::get($id);
// 模板變量賦值
$this->assign('student',$student);
return $this->fetch('edit');
}
/**
* @param Request $request
* @throws \think\exception\DbException
* 更新數據方法名必須為update
*/
public function update(Request $request){
// 獲取數據修改數據頁面的id
$id = $request->post('id');
// 讀取數據
$user = UserModel::get($id);
// dump($id);
// $user->number = $request->post('number');
// if (false !== $user->save()) {
// return '修改成功';
// 獲取表單數據
$data = input('post.');
$user->number = $data['number'];
$user->name = $data['name'];
$user->sex = $data['sex'];
$user->banji = $data['banji'];
$user->frmali = $data['frmali'];
$user->phone = $data['phone'];
// 修改數據使用validate驗證必須在save()加入$user->getData();才能使用驗證器
if (false !== $user->validate(true)->save($user->getData())){
$this->success('修改成功',url('index/index/index'));
}else{
$this->error($user->getError());
}
}
/**
* 添加數據方法名必須要add
*/
public function add(){
$data = input('post.');
$user = new User;
$user->number = $data['number'];
$user->name = $data['name'];
$user->sex = $data['sex'];
$user->banji = $data['banji'];
$user->frmali = $data['frmali'];
$user->phone = $data['phone'];
// $validate = new Index;
if ($user->validate(true)->save($user->getData())){
return $this->success('添加數據成功',url('index/index/index'));
}else{
$this->error($user->getError());
}
}
public function tianjia(){
return $this->fetch('add');
}
}
~~~
User.php:
~~~
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2017/6/9
* Time: 23:01
*/
namespace app\index\controller;
use think\Model;
class User extends Model{
protected $table = 'user';
}
~~~
驗證器代碼:
User.php:
~~~
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2019/6/11
* Time: 14:49
*/
namespace app\common\validate;
use think\Validate;
class User extends Validate{
protected $rule = [
'number' => 'require|number|length:10',
'name' => 'require|length:2,8',
'sex' => 'require',
'banji' => 'require|length:2,3|number',
'frmali' => 'require|min:5|number',
'phone' => 'require|regex:1[3-8]{1}[0-9]{9}',
];
}
~~~
數據庫代碼:
xsxt.sql:
# Host: localhost (Version: 5.5.53)
# Date: 2019-06-11 20:58:34
# Generator: MySQL-Front 5.3 (Build 4.234)
/*!40101 SET NAMES utf8 */;
#
# Structure for table "user"
#
CREATE TABLE `user` (
`id` int(25) NOT NULL AUTO_INCREMENT,
`number` int(11) NOT NULL,
`name` text NOT NULL,
`sex` text NOT NULL,
`banji` text NOT NULL,
`frmali` text NOT NULL,
`phone` text NOT NULL,
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
#
# Data for table "user"
#
INSERT INTO `user` VALUES (5,2019061211,'123','12','12','123456','17876112564','2019-06-11 19:59:28'),(6,2019051111,'test','男性','11','12345','15654542365','2019-06-11 20:00:19'),(7,2019061231,'admin','女','00','12345','18345678910','2019-06-11 20:21:52'),(8,2019061234,'1234','男','00','12345','17123456789','2019-06-11 20:20:19');
還有一個就是這次用到了前端框架layui