0%

数据库课程设计学习记录三

查询数据、修改数据和删除数据

这里讲述如何查询数据表里的数据以及修改和删除数据

查询数据

首先我们要在和插入数据的网页的同一个文件夹下新建里一个用来查询的HTML文件,我起名为list.html,然后回到控制器里添加一个list方法,用来渲染输出这个模版文件,list方法的代码为:

1
2
3
4
5
$data = UserModel::paginate(3);
$page = $data->render();
$this->assign('data',$data);
$this->assign('page',$page);
return $this->fetch();

这里的第一行paginate里面的参数是指一页内有几条数据,下面是向list.html模版里传入两个参数,一个是$data, 一个是$page。

接下来是list.html网页内容的书写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="renderer" content="webkit">
<title>设备信息查询</title>
<script src="/js/jquery.js"></script>
<script src="/js/pintuer.js"></script>
</head>
<body>
<div class="panel admin-panel">

<div class="panel-head"><strong class="icon-reorder"> 用户列表</strong>
<span style="float:right"><strong class="icon-reorder"><a href="yonghu"> 添加管理员</a></strong></span>
</div>
<table class="table table-hover text-center">
<tr>
<th width="0%">设备号</th>
<th width="0%">设备名称</th>
<th width="0%">价格</th>
<th width="0%">配置</th>
<th width="0%">厂家名称</th>
<th width="0%">出厂日期</th>
<th width="0%">实验室名</th>
</tr>
{foreach $data as $value}
<tr>
<td>{$value.shebeihao}</td>
<td>{$value.shebeimingcheng}</td>
<td>{$value.jiage}</td>
<td>{$value.peizhi}</td>
<td>{$value.changjiamingcheng}</td>
<td>{$value.chuchangriqi}</td>
<td>{$value.shiyanshiming}</td>
<td><div class="button-group">
<a class="button border-main" href="edit?shebeihao={$value.shebeihao}"><span class="icon-edit"></span> 修改</a>
<a class="button border-red" href="delete?shebeihao={$value.shebeihao}" ><span class="icon-trash-o"></span> 删除</a>
</div></td>
</tr>
{/foreach}

</table>
<div align="center">{$page}</div>
</div>
</body></html>

这样当我们访问list方法时,就可以看到我们的数据了。

信息列表

修改数据

其中

1
2
<a class="button border-main" href="edit?shebeihao={$value.shebeihao}"><span class="icon-edit"></span> 修改</a>
<a class="button border-red" href="delete?shebeihao={$value.shebeihao}" ><span class="icon-trash-o"></span> 删除</a>

这两行提供了修改和删除的按钮,点击他们,就会进入到控制器的edit和delete方法,并且传回主键的参数,接下来我们返回控制器来写edit方法:

1
2
3
4
5
6
7
public function edit()
{
$shebeihao = input('get.shebeihao');
$data = UserModel::get($shebeihao);
$this->assign('data',$data);
return $this->fetch();
}

这里前面接收了主键信息,后来又把信息传到了edit.html里,我们去写edit.html文件:

在上述HTML文件下建立一个edit.html文件,里面写入:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="renderer" content="webkit">
<title>修改设备信息</title>
<script src="/js/jquery.js"></script>
<script src="/js/pintuer.js"></script>
</head>
<body>
<div class="panel admin-panel margin-top" id="shebei">
<div class="panel-head"><strong><span class="icon-pencil-square-o"></span> 修改设备信息</strong></div>
<div class="body-content">
<form method="post" class="form-x" action="update">
<input type="hidden" name="shebeihao" value="{$data.shebeihao}" />
<div class="form-group">
<div class="label">
<label>设备号</label>
</div>
<div class="field">
<input type="text" class="input w50" value="{$data.shebeihao}" name="shebeihao" data-validate="required:设备名不能为空" />
<div class="tips"></div>
</div>
</div>
<div class="form-group">
<div class="label">
<label>设备名称</label>
</div>
<div class="field">
<input type="text" class="input w50" name="shebeimingcheng" value="{$data.shebeimingcheng}" data-validate="required:设备名称不能为空"/>
<div class="tips"></div>
</div>
</div>
<div class="form-group">
<div class="label">
<label>价格</label>
</div>
<div class="field">
<input type="text" class="input w50" name="jiage" value="{$data.jiage}" data-validate="required:价格不能为空"/>
<div class="tips"></div>
</div>
</div>
<div class="form-group">
<div class="label">
<label>配置</label>
</div>
<div class="field">
<input type="text" class="input" name="peizhi" value="{$data.peizhi}" data-validate="required:配置不能为空"/>
<div class="tips"></div>
</div>
</div>
<div class="form-group">
<div class="label">
<label>厂家名称</label>
</div>
<div class="field">
<input type="text" class="input" name="changjiamingcheng" value="{$data.changjiamingcheng}" data-validate="required:厂家名称不能为空"/>
<div class="tips"></div>
</div>
</div>
<div class="form-group">
<div class="label">
<label>出厂日期</label>
</div>
<div class="field">
<input type="text" class="input" name="chuchangriqi" value="{$data.chuchangriqi}" data-validate="required:出厂日期不能为空"/>
<div class="tips"></div>
</div>
</div>
<div class="form-group">
<div class="label">
<label>实验室名</label>
</div>
<div class="field">
<input type="text" class="input" name="shiyanshiming" value="{$data.shiyanshiming}" data-validate="required:实验室名不能为空"/>
<div class="tips"></div>
</div>
</div>
<div class="form-group">
<div class="label">
<label></label>
</div>
<div class="field">
<button class="button bg-main icon-check-square-o" type="submit"> 提交</button>
</div>
</div>
</form>
</div>
</div>

</body>
</html>

可以看到这个页面和插入界面很像,我们在这里输入要修改的信息。

修改界面

但是现在提交会报错,因为HTML里面写着

1
<form method="post" class="form-x" action="update">

说明点击提交后,会执行update方法,所以我们去控制器里写入update方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public function update()
{
$data = input('post.');
$shebeihao = input('post.shebeihao');
$valyong = new UserValidate();
if (!$valyong->check($data)){
$this->error($valyong->getError());
exit;
}
$user = new UserModel();
$ret = $user->allowField(true)->save($data,['shebeihao'=>$shebeihao]);
if($ret){
$this->success('修改设备信息成功','Shebei/list');
}
else{
$this->error('修改设备信息失败');
}
}

这个方法中,我们先将修改后的数据传回来,然后使用验证器验证数据的格式是否正确,然后将其更新到对应主键的一行里,完成修改。

修改成功

删除数据

删除数据需要在控制器中定义delete方法:

1
2
3
4
5
6
7
8
9
10
11
public function delete()
{
$shebeihao = input('get.shebeihao');
$ret = UserModel::destroy($shebeihao);
if($ret){
$this->success('删除用户成功','Shebei/list');
}
else{
$this->error('删除用户失败');
}
}

删除方法里首先将主键信息传回来,然后使用destroy方法删除即可。

重复步骤

然后按照同样的方式建立起4张基本表的增删改查方法,即完成了课设作业的第一步。