内容简介:本次的目的是完成学生选课系统的首页查询功能的实现,具体要求:1.在首页显示当前周的课表。
本次的目的是完成学生选课系统的首页查询功能的实现,
具体要求:
1.在首页显示当前周的课表。
2.显示所有的学生每节课的有无情况。
效果图如下
初始思路:
1.查询当前学期的所有课程
2.查询本周,周几,第几节课的课程id
3.通过课程id查询有那些学生选择了该课程
4.将查询到的学生id设为有课,其余为无课,并将数据传输到V层
依照以上方法,实现的时候才发现很复杂,而且由于多层查询需要用循环套循环的方法,
所以最后代码不但很长,而且出了一点错误就很难改过来,把自己绕了进去
// 获取数据库信息,并传到V层显示。
public function index() {
// 查询当前学期
$term = Term::where('state',1)->find();
// var_dump($term->id);
// 获取当前学期的所有课程
$courseId = Course::where('term_id',$term->id)->column('id');
// var_dump($courseId);
// 获取本周的课程
$classTime = ClassTime::where(['course_id' => $courseId])->select();
// var_dump($classTime);
// var_dump(strtotime(date('Y-m-d')));
// var_dump(strtotime($term[0]['start_time']));
$week = intval((strtotime(date('Y-m-d')) - strtotime($term->start_time))/7/86400);
// var_dump($week);
$classTime = $classTime->where('week',$week);
// var_dump($classTime);
$studentName = Student::where('state',1)->column('name');
// var_dump($studentName);
for ($j=0; $j < 7; $j++) {
for ($i=0; $i < 5; $i++) {
$num = count($studentName);
// var_dump($studentName[0]);
for ($k=0; $k < $num; $k++) {
$home = new Home;
$home->day = $j+1;
$home->period = $i+1;
$home->name = $studentName[$k];
$home->state = 0;
if (!is_null($classTime)) {
$classTime = $classTime->where('day',$j+1);
$classTime = $classTime->where('period',$i+1);
// var_dump($classTime);
// 获取学生Id
$stuCoursId = StudentCourses::where(['courses_id' => $classTime->column('course_id')])->column('student_id');
$stuState = Student::where(['id' => $stuCoursId])->column('state');
// var_dump($home);
// var_dump($stuState[0]);
if (!is_null($stuCoursId) && in_array(1, $stuState)) {
$stuName = Student::where(['id' => $stuCoursId],['state',1])->column('name');
// var_dump($stuName);
// $home->save();
if (!is_null($home->where(['name' => $stuName])->find())) {
$home->where(['name' => $stuName])->find()->state = 1;
}
}
}
$lists[$j][$i][$k] = $home;
}
// var_dump($home);
}
// var_dump($home);
}
$week = ['周一','周二','周三','周四','周五','周六','周日'];
var_dump($lists[0][0][0]);
// var_dump($list);
$this->assign('week',$week);
$this->assign('lists',$lists);
return $this->fetch();
}
这部分代码虽然实现了功能,但是明显不是老师要得效果,主要是没有面向对象的思想,
因此,后面老师讲了一种面向对象的思想
思路如下:
1.首先设立三个数组:周几,第几节,学生。这三个数组分别有一个name一个id属性
2.将数组数据传输到V层,并显示
3.利用这三项数据,调用一个getHasCourse的方法,直接查询学生是否有课,并返回true或faluse
按照以上思路,发现事情变得很简单。
首先,C层的查询和建立两个关于周次和节次的数组
然后,V层显示数据
其中的eq里面就是调用的getHasCourse方法,该方法写在M层里面,传入的参数为学生id,周次id,节次id
经过这么写,发现思路很清晰,每层的功能也能很明白的了解到,而且代码也并不复杂,甚至一个for循环都没有用到。
总结
这次的首页查询功能,让我更多的了解到了面向对象的思想,但是老师讲出来之后明白了和自己本身就有的还是不一样的。
思想转变不是那么的容易,还需要多加练习。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- NideShop 微信小程序商城更新,添加物流查询功能
- MySQL实现排名并查询指定用户排名功能,并列排名功能
- sqltoy-orm 4.15.3 发版,增强非 sql 模式的查询功能
- MassDNS:一款功能强大的高性能DNS子域名查询枚举侦察工具
- Proxy-Go v8.7 发布,增强 socks5 代理 UDP 功能,DNS 支持 TCP 方式查询!
- 存储过程 – 重新编译后,存储过程运行得很快
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
PHP and MySQL Web Development
Luke Welling、Laura Thomson / Sams / July 25, 2007 / $49.99
Book Description PHP and MySQL Web Development teaches you to develop dynamic, secure, commerical Web sites. Using the same accessible, popular teaching style of the three previous editions, this b......一起来看看 《PHP and MySQL Web Development》 这本书的介绍吧!