最近这段时间,在用php做一个会议室预定系统,由于刚开始接触php语言,所以对于语法不是很熟悉,在这个学习和制作项目的过程中,发现了一些问题,借着今天周末的时间,总结一下,希望能对像我这样的菜鸟,有所帮助,如果发现bug或者有争议的地方,欢迎指出,沟通互动与交流,谢谢。


    我使用的是yaf框架,ngnix服务器,mysql数据库,php5.5。关于系统的安装,请参考上一篇帖子,地址如下:http://mig1924615.blog.51cto.com/9385857/1755532


    刚开始觉得,用php做一个网页版的会议预定系统,没有那么复杂,做几个按钮,做一个表格,再向前端请教一下,配一个好看点的样式就ok了,但做起来就会发现,眼高手低了。


    简单画了一个草图,如下:

wKioL1cvRM7AgqeDAAEQt5WCQkw336.png


    首先,会议预定部分,添加的信息不仅要加入到数据库中,还要在添加成功的同时,显示到当天的会议预定信息中,而你要做的就是考虑,如何将这些信息,映射到右边的显示面板中。


    其次,左边的日历,点击之后,右边的表格会显示,相应日期的预定会议信息,并且要实现会议跨行处理。


    然后,左下方的按钮,取消会议相对比较简单,添加会议,在model里面的logic部分,需要进行处理,加一些判断,逻辑清楚的话,应该问题也不大,那么关键在于修改会议,相应的处理,以及数据得更新,页面的显示等等,需要处理好。


    涉及的技术,关键部分在于JQuery和Ajax部分多一些,php相关部分可能会比较容易上手,但是前两个,需要注意的地方有很多。


    下面详细说明一下:

  1. 右侧的表格,不是被写死的,所有的数据显示,包括时间段,预订信息,会议室名称等等,都是动态生成的,会通过数据库实时读取信息,进行动态显示,添加成功后,会显示相应的信息,如果输出这样的样式,确实思考了一段时间,如果逻辑理顺通的话,就会快很多。所以,切记,不要急于编程,要先理清逻辑,然后再去写代码,这样,就算有不bug,你也会逻辑清晰,进行下一步的修改,否则,会被自己的代码害得很惨。

  2. 其次,默认情况下,表格显示的是,默认当天的会议信息,点击日历部分,可以显示相应日期的按钮,这部分,需要了解,你使用的JS日历插件,这里,给你们推荐两款,特别实用,并且功能都很强大,其中datetimepiker还可以满足时间选择的需要。

JS插件链接如下:链接:http://pan.baidu.com/s/1o7Qb52q 密码:maci


3.  需要注意的是,右侧的表格,数据的信息是通过foreach循环数组生成的,那么,你会发现,它是横向生成的,那么对于会议的预订信息显示,以及跨行处理,要进行认真的思考,处理好这里的逻辑关系,特别提示一下,否则,生成的表格会很难看,不会是这样画出来的预期效果。


4.  关于数据传送的问题,一般都会想到Ajax的JSON方式,使用POST将它传动到controller层,这个没有错,比如会议室的预定信息,是这么处理的,然后在logic层进行判断,是否会议室有冲突,信息是否填写完全等等,然后做出相应的响应和反馈信息。再使用display方法,将其信息显示到index界面。

--------------但是!!!-----------

    如果是这样呢?我选择好相应的日期,需要将其传到controller层,然后根据日期,查询出会议预定信息,然后再让其显示到index界面,这时候,你还能用ajax传递参数吗???

    如果你说能,那你肯定没有尝试过,不妨做一个实验。

    我可以清楚的告诉你,不能,因为,你会一直得到,响应超时的弹框显示。。。

    ajax不能和display同时使用,那么,我如何将这个参数传递过去呢?

--------------靠它!!!-----------

     header(“Loacation:带参数的URL”);

然后,在controller获取到相应的参数,不同的框架url定义形式不一样,参数格式也不一样,可以自己查询一下相应的资料,这样,参数就可以让index使用了,日历部分的功能也就完善了。


5.  修改会议信息,是绑定的点击函数,可以在黄色部分点击,然后就能进行修改,这里需要注意的是,需要根据会议id去进行参数绑定,然后显示到一个模态框上,当模态框弹出时,显示的会是,修改会议的信息,然后再走一遍添加会议的流程,但是不可以使用同一个模态框,因为,需要单独走一个流程,相同的原理,判断也是相同。


6.  这里面,还有一个逻辑比较关键的就是:时间段的判断,如果判断开始时间和结束时间的包含问题,其中会议预定冲突,只需找出是否包含即可,那么,会议显示部分,由于每次只判断一行,所以要重复判断,包含问题,尤其是边界情况,需要思考清楚。


7.  下一步做的,是进一步完善会议的显示功能,优化界面,然后,将登陆功能,分为不同权限,进行级别划分等等。


    以上就是最近项目的一些简单总结,可能写的不太详细,如果哪部分不太清楚,可以留言,然后给你详细解答。由于涉及系统的公司性质,所以就不贴代码啦,请理解。