Календарь CodeIgniter: хранение и обновление значений флажков за день - PullRequest
0 голосов
/ 04 декабря 2011

Я создаю календарь доступности, используя класс календаря 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 Ответ

1 голос
/ 23 декабря 2011

Первое, что я хотел бы сделать, это отделить поле данных, чтобы сделать его более читабельным. Примерно так будет работать:

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 запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...