За последние 24 часа нас посетили 16809 программистов и 1644 робота. Сейчас ищут 914 программистов ...

Как обработать множество дат

Тема в разделе "PHP для новичков", создана пользователем Dmtq, 2 мар 2014.

  1. Dmtq

    Dmtq Активный пользователь

    С нами с:
    2 мар 2014
    Сообщения:
    28
    Симпатии:
    0
    задача:
    есть календарь, в котором каждый день checkbox.
    выделив произвольное количество дней, надо их сохранить в базу mysql.
    календарь большой: значений может быть от 1 до "очень много" (несколько месяцев, диапазон, затрагивающий конец текущего года и начало следующего).

    в access у мелкомягких есть возможность указывать дату одним уникальным числом. потом я их через запятую писал в таблицу из двух столбцов - id и dates.

    а как быть в php и mysql

    прошу прощения, если было, но поиск не помог в виду скудности моего знания темы. так и не смог сформулировать правильный вопрос
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    Вставить несколько значений одной командой MySQL:
    Код (Text):
    1. INSERT INTO `table`(`a`, `b`) VALUES(
    2. (10, 'qwerty'),
    3. (20, 'asdfgh'),
    4. (30, 'zxcvbn')
    5. )
     
  3. Dmtq

    Dmtq Активный пользователь

    С нами с:
    2 мар 2014
    Сообщения:
    28
    Симпатии:
    0
    возможно я не точно объяснил.
    я могу записать
    id - дата сколько угодно раз.

    как записать
    id дата1 дата2 дата3 произвольное количество раз?
    даты через запятую? какой тип данных?
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    не стало понятней. таблицу нарисуй чтоли
     
  5. Dmtq

    Dmtq Активный пользователь

    С нами с:
    2 мар 2014
    Сообщения:
    28
    Симпатии:
    0
    [​IMG]
    первый вариант не подходит, т.к. конечное количество дат не известно и для каждого id разное.
    как реализовать, что-то похожее на второй вариант?
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    тупой вариант: текстовое поле, где буквально будет строка со значениями через запятую.

    по науке: две таблицы: мастер-детализация.
    в мастере ты хранишь что-то что здесь не указал, например имя пользователя, я х.з. что у тебя есть. а поле id - первичный ключ, автоинкремент.
    в детализации у тебя даты. первичный ключ это пара (id, date) — здесь id берется из мастер таблицы.

    когда тебе понадобится буквально получить список дат в виде строки, можешь воспользоваться функцией group_concat(). либо для удобства отображения пойти на избыточность и, таки, держать строковое поле.

    Добавлено спустя 3 минуты 20 секунд:
    типа поля для даты может быть разный. сделай DATE и не парься.
     
  7. Dmtq

    Dmtq Активный пользователь

    С нами с:
    2 мар 2014
    Сообщения:
    28
    Симпатии:
    0
    Получится вторая таблица с видом
    Id Date
    1 14.02.14
    1 15.02.14
    1 16.02.14
    2 12.01.14
    2 13.01.14
    3 01.01.14


    В первой таблице
    Id Name
    1 Первый набор дат
    2 Второй набор дат
    3 Третий набор дат

    Я правильно понял?
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
  9. Dmtq

    Dmtq Активный пользователь

    С нами с:
    2 мар 2014
    Сообщения:
    28
    Симпатии:
    0
    Большое спасибо