喜悦国际村 » PHP高级编程 » 请问如何做一个日程表

页: [1]
smallipis2007-3-15 05:57 AM
请问如何做一个日程表

我想做一个日程表,把一天的8:00-18:00)分成若干份,(时间范围任意选,时间越长,那div就越高),标明哪些是约好的,没约的可以添加,如
今天07-3-15

8:00   有约 (8:00 -9:10是有约的,约一行高)
9:10  无约,请点击添加(9:10-12:00,没约,约3行高)


12:00 有约(12:00-14:20,有约,高度约2行多)

14:20 无约,请点击添加(14:20-18:00无约,约4行高)



上面部份就是一个表格样,但不知道怎么设计数据库好,时间段不分大小.....

剑枫2007-3-16 04:11 PM
我也想做这东西

技术上木什么,想在易用性上就难了,可以参考google的日历

smallipis2007-3-19 01:33 AM
高人们,给点意见小弟啊...都春天了,,还冬眠~~

seakingx2007-3-19 06:37 AM
我也想知道,  关注一下。

imsheng2007-3-20 06:19 PM
加个颜色标识,红色是重要的约会,黄色是次要的约会,绿色是一般的约会,等等。

当然,用高度或颜色来做,在技术上都是一样的,只是要考虑扩展性。

数据库用两个表,
A表:记录当天某个约会的详细信息(如时间地点内容等),根据约会ID来排列;
B表:记录当天约会的分布,在哪个时间段有约会,约会ID是什么,根据时间段来排列;

A表

约会ID,约会内容
000001,要上PHPX.COM灌水
000002,要和MM去吃饭午觉
000003,要去领福利
000004,.......
000005,.......

B表

日期,时间段,约会ID集
0321,0800-0910:1200-1420,000001:000002
0322,0800-0830:1000-1400:1500-1800,000003:000004:000005

我的思路,查询的时候先查B表,处理B表的第2个字段,取得有约会的时间(用冒号分割),和对应的约会ID(用冒号分割),再去查A表获得详细信息

没有约会时间的就空白。

添加的话直接在冒号后添加


0321,0800-0910:1200-1420:0600-0800:1500-1700,000001:000002:000006:000007

如果修改的话,获得要修改的时间段,比如1200-1420,然后操作字段,抹去原来的信息,相应地修改第3个字段

B表的构造处理比较难,需要用到字符串处理

难点在于字符串操作,不过优点很明显。

[[i] 本帖最后由 imsheng 于 2007-3-21 02:20 AM 编辑 [/i]]

seakingx2007-3-21 12:22 AM
按imsheng 的思路,  显示日程的算法是
读TABLEB , 按日期读相关数据
把日程的时间段存到 arraySchedule[$i][1]
把日程ID存到arraySchedule[$i][0]
读TABLEA,按日期读相关数据
把日程说明存到arraySchedule[$i][1]

然后把arraySchedule按 [1] 排序
输出 arraySchedule , 如果arraySchedule[$i][1]的开始时间不等于 arraySchedule[$i-1][1] 的结束时间, 显示[新增日程]

[i]继续关注中...[/i]

[[i] 本帖最后由 seakingx 于 2007-3-21 08:25 AM 编辑 [/i]]

liyaping2007-3-22 03:22 AM
用数组实现

这是我出的一道考试题,哈哈

检索SQL,刷数据到数组内,合并相应同任务(含交错时间任务)的连续时间格,最后输出即可

smallipis2007-3-23 02:21 AM
保存的数组觉得是把一天的N开始和结束组合起来吧.
如上面的0322,0800-0830:1000-1400:1500-1800,000003:000004:000005

$app_ary[$i]['time'][] = 0800 (如没有8点开始记录,则自动添加,再用$app_ary[$i]['type']标志是否有约的)
$app_ary[$i]['time'][] = 0830
$app_ary[$i]['time'][] = 1000
$app_ary[$i]['time'][]= 1400
$app_ary[$i]['time'][]= 1500
$app_ary[$i]['time'][]= 1800 (结束时间,如没有则也自动添加)

以上只是针对时间段,然后把这数组处理日程表,暂不考虑事件.
不知道这样的想法行不行

感谢imsheng 意见,至于保存的方法,如果每条记录作为一个约会可能比较容易控制

imsheng2007-3-24 12:29 AM
我认为这种方法属于用时间换空间的结构。

检索数据出来后,数据的处理会比较复杂。

另外还有用空间换时间的结构的。


查看完整版本: 请问如何做一个日程表


Powered by Discuz! Archiver 6.1.0  © 2001-2006 Comsenz Inc.
Processed in 0.01418 second(s), 2 queries