За последние 24 часа нас посетили 15589 программистов и 1557 роботов. Сейчас ищут 829 программистов ...

Информация о количестве подписчиков за 7 дней

Тема в разделе "PHP и базы данных", создана пользователем fartuk, 29 окт 2013.

  1. fartuk

    fartuk Новичок

    С нами с:
    29 окт 2013
    Сообщения:
    40
    Симпатии:
    0
    Здравствуйте! Есть база данных с таблицей юзеров. Нужно сделать, чтобы из таблицы можно было взять информацию о том сколько у человека подписчиков в каждый из семи прошлых дней. Например сегодня 7 вчера 8 позавчера 5 и так семь дней. Сначала хотел создать 7 полей (или одно поле с массивом) и по окончании дня, чтобы седьмое значение присваивалось шестому, шестое- пятому и.тд. Но как сделать, чтобы это происходило в автоматическом режиме? Или может быть какие-то другие варианты?
     
  2. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
  3. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    +1 к предыдущему каменту, хочу только уточнить: что такое "количество подписчиков", как оно задано?
    предположу, что если сделать поле типа счетчик подписчиков к таблице users, то нам никак не получить календарную статистику. надо какую-то отдельную таблицу, где бы присутствовала дата.
     
  4. fartuk

    fartuk Новичок

    С нами с:
    29 окт 2013
    Сообщения:
    40
    Симпатии:
    0
    Это численное значение. Допустим, сегодня у меня было 7-> добавился один стало 8. Наступило "завтра" Теперь у меня за вчера 8 и сегодня пока 8 ->Дальше сегодняшнее значение может изменяться.Например 2 удалились стало 6.
    Это как-бы счётчик, значения которого сохраняются за прошедшие 7 дней.
     
  5. Slavka

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

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    ээ кажется тут надо немного от обратного идти ..
    делать 7 записей .. - в понедельник писать в 1 во вторник во 2 ...

    потом все записи суммировать и будет итог за 7 дней .. надо за 3 - суммируйте за 3 дня ..
     
  6. fartuk

    fartuk Новичок

    С нами с:
    29 окт 2013
    Сообщения:
    40
    Симпатии:
    0
    Это допустим понятно. Таблица c полями д1 д2 д3 д4 д5 д6 д7 д7-сегодня. Но как сделать, чтобы каждый день д1 присваивалось значение д2
    д2 присваивалось значение д3;
    д3 присваивалось значение д4;
    и т д
    д6 присваивалось значение д7;
    д7 присваивался 0;
     
  7. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    Не годятся 7 (20, 1000) полей. Надо записи с календарной привязкой. Должно быть пофигу за какой период запрашивать, хоть за месяц, хоть за год. Такую гибкость даст только отдельная таблица.
     
  8. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Только хотел об этом написать ) Схема с полями/строками рухнет как только понадобится статистика за 2 недели.
     
  9. fartuk

    fartuk Новичок

    С нами с:
    29 окт 2013
    Сообщения:
    40
    Симпатии:
    0
    Но мне так-то и не нужна статистика, больше чем за 7 дней. Но если это не будет сложно в реализации, то можно и вашим способом сделать, тоько обьясните пожалуйста поподробнее, как это сделать?

    Добавлено спустя 1 минуту 43 секунды:
    ид юзеров, подписанных на меня хранятся в таблице в массиве.

    Добавлено спустя 2 минуты 2 секунды:
    И число за сегодня как раз формируется в результате подсчёта числа элементов массива
     
  10. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    Дело твоё, ты просто не представляешь с чем связался ))) Ты будешь городить костыль на костыле. Нет в базе массивов и вообще SQL придуман для работы со множествами, представленными в виде записей.

    Думай!!!
     
  11. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Сложно в реализации - это как раз твой вариант. Сложно именно в дальнейшей работе, системе костылей и подборок которые тебе придется городить, как верно заметил artoodetoo.

    Попробуй взять ручку, листочек и составить список всех необходимых задач которые должен выполнять твой скрипт, соответственно продумать под это дела схему БД, так что бы можно было делать необходимые выборки данных и при этом не было излишней избыточности данных.

    Абстрактный пример: тебе нужны списки рассылок. У тебя должна быть таблица с юзерами (имя, пароль, почта и т.д.), таблица рассылов (название, описание) и связующая таблица (ид юзера, ид рассыла, дата подписки). Теперь ты можешь сделать выборку по количеству подписчиков для любой рассылки за любой период, выбрать подписки юзера или подписавшихся на конкретную рассылку. Без костылей, одним запросом к базе.