CodeIgniter日历:每天存储和更新复选框值

时间:2011-12-04 12:34:42

标签: php mysql forms codeigniter checkbox

我正在使用CodeIgniter的日历类构建可用性日历。 我正在为每个月的每一天生成复选框:

[ ] Morning
[ ] Afternoon
[ ] Evening

用户可以在某一天检查或取消选中其可用性。 POST数组如下所示:

Array (
[2011-12-01] => Array (
        [morning] => 1
        [afternoon] => 1
    )

[2011-12-02] => Array (
        [evening] => 1
    )

MySQL表中的数据如下所示:

ID  |   date        |   data
- - - - - - - - - - - - - - -
1   |   2011-12-01  |   1-1-0
2   |   2011-12-02  |   0-0-1

数据值是早上 - 下午 - 晚上0或1。

如果某一天(0-0-0)没有可用性,则该行不需要存在。 我的解决方案是删除当月的所有行,然后为每一天插入所有值(例如1-0-0)。这可能取决于插入31个查询。

问题: 在没有运行大量查询的情况下,更新表的最佳解决方案是什么?

提前致谢!

PS。 我也不完全确定数据的存储方式。如果我想在将来使用jquery / ajax进行更改时更新它,那么每天的每个部分可能会更容易。我也会对此提出一些看法。

1 个答案:

答案 0 :(得分:1)

我要做的第一件事就是将数据字段分开,使其更具人性化。像这样的东西会起作用:

ID  |   date        |   is_morning | is_afternoon | is_evening
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1   |   2011-12-01  |   1          | 1            | 0
2   |   2011-12-02  |   0          | 0            | 1

其次,我不担心对数据库运行31次INSERT或UPDATE。我不确定您的环境,但我运行的脚本可以更新数百,数千甚至数万个针对数据库的插入/更新。我从未注意到任何小于31个查询的性能问题。