ThinkPHP(十三)班级管理:建立数据库表,数据列表index

一、建立数据库表

1.依据E-R图,建立数据表

外键: https://www.cnblogs.com/chenxiaohei/p/6909318.html
在这里插入图片描述

2.执行以下sql语句完成建表过程。

SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
--  Table structure for `yunzhi_klass`
-- ----------------------------
DROP TABLE IF EXISTS `yunzhi_klass`;
CREATE TABLE `yunzhi_klass` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(40) NOT NULL DEFAULT '' COMMENT '名称',
  `teacher_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '教师ID',
  `create_time` int(11) NOT NULL DEFAULT '0',
  `update_time` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `yunzhi_klass`
-- ----------------------------
BEGIN;
INSERT INTO `yunzhi_klass` VALUES ('1', '实验1班', '1', '0', '0'), ('2', '实验2班', '2', '0', '0'), ('3', '实验3班', '1', '0', '0'), ('4', '实验4班', '2', '0', '0');
COMMIT;

SET FOREIGN_KEY_CHECKS = 1;

数据表的结构如下:
在这里插入图片描述
的确,当我们使用navicat来查看数据表时,我们发现,不但建立了数据表,而且还在该数据表中添加了四条数据。

二、班级模块

1. 建立班级模型

建tp5\application\common\model\Klass.php

<?php
namespace app\common\model;
use think\Model;

/**
 * 班级模型
 */
class Klass extends Model
{
	/**
	 * 根据ID获取Teacher对象
	 * 主要用于V层显示教师名字
	 */
	public function getTeacher(){
		$teacherId=$this->getData('teacher_id');
		$Teacher=Teacher::get($teacherId);
		return $Teacher;
	}
}

2.控制层

新建:tp5\application\index\controller\klassController.php

<?php
namespace app\index\controller;
use app\common\model\Klass;

class KlassController extends IndexController
{
	public function index(){
		$klasses=Klass::paginate(); //分页:默认15条
		$this->assign('klasses',$klasses); //数据注册到V层
		return $this->fetch(); //返回到v层
	}

	
}

3.V层

新建:tp5\application\index\view\Klass\index.html

<!DOCTYPE html>
<html lang="zh-cn">

<head>
    <meta charset="UTF-8">
    <title>班级管理</title>
    <!-- <link rel="stylesheet" type="text/css" href="/thinkphp5/public/static/bootstrap-3.3.5-dist/css/bootstrap.min.css"> -->
    <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>

<body class="container">
    <div class="row">
        <div class="col-md-12">
            <hr />
            <div class="row">
                <div class="col-md-8">
                    <form class="form-inline">
                        <div class="form-group">
                            <label class="sr-only" for="name">名称</label>
                            <input name="name" type="text" class="form-control" placeholder="名称..." value="{:input('get.name')}">
                        </div>
                        <button type="submit" class="btn btn-default"><i class="glyphicon glyphicon-search"></i>&nbsp;查询</button>
                    </form>
                </div>
                <div class="col-md-4 text-right">
                    <a href="{:url('add')}" class="btn btn-primary"><i class="glyphicon glyphicon-plus"></i>&nbsp;增加</a>
                </div>
            </div>
            <hr />
            <table class="table table-hover table-bordered">
                <tr class="info">
                    <th>序号</th>
                    <th>名称</th>
                    <th>辅导员</th>
                    <th>操作</th>
                </tr>
				{volist name='klasses' id='klass' key='key' }
                <tr>
                    <td>{$key}</td>
                    <td>{$klass->getData('name')}</td>
                    <!--根据ID获取对应的教师名字-->
                    <td>{$klass->getTeacher()->getData('name')}</td>
                    <td>
                    <a class="btn btn-danger btn-sm" href="{:url('delete?id=' . $klass->getData('id'))}"><i class="glyphicon glyphicon-trash"></i>&nbsp;删除</a>&nbsp;<a class="btn btn-sm btn-primary" href="{:url('edit?id=' . $klass->getData('id'))}"><i class="glyphicon glyphicon-pencil"></i>&nbsp;编辑</a>
                    </td>
                </tr>
				{/volist}
            </table>
            {$klasses->render()}
        </div>
    </div>
</body>

</html>
效果:http://tp5/index.php/index/klass/

在这里插入图片描述

4.分页配置

如果在数据表中添加足够多的数据,相信你会发现,如果我们不向paginate()中传入任何参数,那么每页将固定返回15条数据。产生的原因当然也很简单:默认值。

config.php中对分页配置设置了默认值,当然了,config.php中有200多行代码,近100项配置参数,如果有时间,推荐我们多浏览几遍。

统计修改每页返回数据条数
config.php

...
    //分页配置
    'paginate'=> [
        'type' => 'bootstrap',
        'var_page'  => 'page',
        'list_rows' => 5,    // 修改分页显示5条数据
    ],
...    

5.多次调用,一次运算

假设我们除了要查看辅导员姓名外,还想查看辅导员的ID。那么V层(index.html)应该进行如下改写。

...
                    <td>{$key}</td>
                    <td>{$klass->getData('name')}</td>
                    <td>
                        {$klass->getTeacher()->getData('name')}
                        {$klass->getTeacher()->getData('id')}
                    </td>
                    <td><a class="btn btn-danger btn-sm" href="{:url('delete?id=' . $klass->getData('id'))}"><i class="glyphicon glyphicon-trash"></i>&nbsp;删除</a>&nbsp;<a class="btn btn-sm btn-primary" href="{:url('edit?id=' . $klass->getData('id'))}"><i class="glyphicon glyphicon-pencil"></i>&nbsp;编辑</a></td>
...

6.重构及优化

<?php
namespace app\common\model;
use think\Model;

/**
 * 班级模型
 */
class Klass extends Model
{
	private $Teacher;
	/**
	 * 根据ID获取Teacher对象
	 * 主要用于V层显示教师名字
	 */
	public function getTeacher(){
		/只有Teacher对象不存在时才去根据Id查询对象,这样可以避免多次查询,浪费资源
		if(is_null($this->Teacher)){			
			$teacherId=$this->getData('teacher_id');
			$this->Teacher=Teacher::get($teacherId);
		}
		/若有对象则直接返回
		return $this->Teacher;

	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本高校班级管理系统的主要目的是为了方便毕业之后大家保持联系,不会因为彼此分开而使得同学间的感情疏远。因此要为班级成员提供一个温馨,友好的操作界面,让大家进入系统感觉如同走进家庭般温暖,同时为具有较高权限的系统管理员提供相应的系统功能。高校班级管理系统主要需要实现以下基本功能: 1.登入功能:系统首页提供登入对话框,输入用户名和密码,系统验证正确后进入系统,否则提示错误信息。 2.注册功能:该功能为浏览者提供注册功能,在注册界面填写相应信息,系统验证正确后,成为系统用户。 3.留言功能:所有用户都具有此功能,它用于用户发留言。 4.查看留言功能:所有用户都具有此功能,用于查看系统中所有成员留言。 5.删除留言功能:该功能只有系统管理员才能使用,用于删除系统中不需要的留言。 6.个人信息修改功能:所有用户都具有此功能,用于修改用户注册信息。 7.查看班级信息功能:所有用户都具有此功能,用于查看当前系统信息,如班级创建者,班级说明,班级成员总数,留言总数,相片总数等。 8.修改班级信息功能:该功能只有系统管理员才能使用,用于修改班级信息。 9.上传相片功能:该功能只有系统管理员才能使用,用于将班级照片发布在系统中 10.删除相片功能:该功能只有系统管理员才能使用,用于删除不需要的照片。 11.浏览相片功能:所有用户都具有此功能,用于浏览系统发布的照片。 12.发送短信功能:所有用户都具有此功能,用于在系统中发送短信,你可以指定发送对象。 13.查看短信功能:所有用户都具有此功能,用于查看是否有自己的短信。 14.删除短信功能:该功能只有系统管理员才能使用,用于删除不需要的短信。 15.发布班级新闻功能:该功能只有系统管理员才能使用,用语发布班级重要通知等。 16.修改班级新闻功能:该功能只有系统管理员才能使用,用于修改新闻内容。 17.删除班级新闻功能:该功能只有系统管理员才能使用,用于删除系统中的旧新闻。 18.添加教师功能:该功能只有系统管理员才能使用,用于添加教师信息。 19.查看教师信息功能:所有用户都具有此功能,用于查看教师信息,方便用户与教师取得联系。 20.查看用户信息功能:该功能只有系统管理员才能使用,用于查看注册的所有用户信息。 21.用户权限设置功能:该功能只有系统管理员才能使用,用于设置用户权限,是否将用户提升为管理员,或者将管理员降为一般用户。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值