Показать сообщение отдельно
  #6 (permalink)  
Старый 30.09.2015, 01:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Учить конечно нужно, а вот как сделать, это вопрос. Почему была дано поискать "зависимые списки", потому, что вы не DVD контент отдаете пользователю, в котором можно выбрать одну из N звуковых дорожек. Это означает, что один язык - один файл. Из этого следует, что выбор в списке языка означает запрос списка файлов на соответствующем языке.

В этом случае файлы хранятся в базе под полями: уникальный идентификатор файла, идентификатор языка как emun значения "Русский язык", "Английский язык", "Казахский язык" (хотя выбор как текст, во внутреннем представлении SQL будет оперировать с числами от 1 до 3), имя файла, название фильма, описание фильма, и т.п. Если речь идет о сериях, то это уже будут связанные таблицы, так как не выгодно дублирование данных в базе - название, описание и прочее. То есть имена файлов будет описывать не эта таблица, а связанная с ней по идентификатору фильма другая таблица, в которой будут имена файлов и принадлежность к серии, по номерам которой можно сортировать выборку.

Список выбора языка будет выглядеть как:

<select>
<option value="1">Русский язык</option>
<option value="2">Английский язык</option>
<option value="3">Казахский язык</option>
</select>


и по умолчанию выбран русский. По умолчанию выводится список и фильмов на русском языке, то есть выборка для этого списка производиться по условию "идентификатор языка = 1".

<select>
<option value="13">Название фильма</option>
<option value="25">Название фильма</option>
<option value="37">Название фильма</option>
</select>


Если пользователь выбирает другой язык, то происходит запрос в базу и выбираются фильмы по выбранному идентификатору. Возвращается новый список фильмов.

Когда запрашивается сам фильм, то запрос в базу, это получить имя файла фильма по условию, что язык равен выбранному id из списка языков и ID фильма соответственно выбранному из списка фильмов.

Все файлы фильмов при этом хранятся в одной папке, хотя для производительности желательно ее разбить на папки соответствующие например тематике - драма, приключения, и т.д. База в этом случае должна хранить и путь к фильму, или же удобнее его описывать серверным языком как значения массива, ключами которого будет ID жанра фильма из базы. В этом случае правка пути не потребует изменений данных в базе.

Можно конечно использовать и одно имя для трех языков "Мне же нужно чтобы человек уже выбрав и смотря во втором списке определенную серию, захотел сменить её язык и сменил выбором в первом селекте (второй же уже выбран).", в этом случае одноименные файлы должны быть расположены в трех каталогах, каждый для своего языка. Принадлежность фильма к языку можно даже и не описывать в базе, но при кажущейся простоте такого решения у него есть один существенный недостаток, который сводит на нет эту простоту - использование пользователем поиска/фильтра по каталогу фильмов означает для сервера "ковыряться не только в базе, но еще и плюс в файловой системе", а последнее может стать со временем слишком накладной операцией.

Последний раз редактировалось laimas, 30.09.2015 в 02:00.
Ответить с цитированием