@mwp

Как записать несколько значений в одном поле MySQL?

Добрый день!

Переделываю платформу для просмотра видеоуроков. Используется PHP, MySQL, RedBeanPHP
Как это работает сейчас: В таблице в MySQL у каждого пользователя есть строка, в которой содержатся:
1. ID курса, на который он подписан
2. Номер дня недели, в который начались его занятия
3. Количество доступных видеоуроков

Новые видеоуроки становятся доступны раз в неделю. Запросом mysqli_query вручную всем записям, с соответствующим номером дня недели (например 2 - вторник) устанавливается новое количество доступных уроков.
Когда пользователь заходит в личный кабинет, с помощью mysqli_query с лимитом равным количеству доступных конкретно ему видеоуроков и цикла while показываются первые n уроков его курса

В чем недостатки:
1. Пользователь может быть подписан только на 1 курс (с осени когда пользователи будут подписываться на новые курсы, нужно, чтобы старые не исчезали);
2. Пользователю может быть доступно только одно количество уроков.

Что нужно:
Записать для одного пользователя сразу несколько курсов, на которые он подписан. При этом, количество доступных ему уроков может быть разным (Например, на курс 1 он записался раньше, и там ему уже доступны 4 урока. А на курсе 2 ему доступны только 2 урока). Подскажите пожалуйста, как это реализовать более оптимально?
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
@FanatPHP
Чебуратор тега PHP
Тебе надо освоить базовые принципы реляционных баз данных
и освоить такие понятия как "отношение один ко многим" и join

Поскольку ответ на вопрос "Как записать несколько значений в одном поле MySQL?" звучит так:

завести ещё одну таблицу, в которую писать нужные значения на разных строках, вместе с id строки из основной таблицы


после этого делаешь запрос к этой таблице, передавая ид пользователя, и получаешь все его курсы

и я очень, очень очень очень очень очень очень надеюсь что видеокурсы не по программированию.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
alekseyHunter
@alekseyHunter
Android developer
Поставьте триггер на insert для описанной вами таблице.
Создать таблицу "config", в ней храните для каждого курса количество доступных уроков "available_lessons".
В ранее созданном триггере получать по id курса из таблицы config поле "available_lessons" и подставлять это значение в 3 столбец вашей таблицы.
Ответ написан
firedragon
@firedragon
Senior .NET developer
Как предложил FanatPHP отдельная таблица, по теории нормализации это будет правильно.
Хотя можно и через CSV

документ, еще один документ, ромашка


В одном поле и обрабатывать это уже в приложении
Ответ написан
anton_reut
@anton_reut
Начинающий веб-разработчик
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы