Для правильного вопроса надо знать половину ответа
Стандартно - в отдельной таблице связи многие-ко-многим.
Современный способ - в колонке с типом JSON.
Говнокод - в строке через запятую или другой разделитель.
Для правильного вопроса надо знать половину ответа
Скорее всего, Windows по метаданным обнаружил, что это два начертания (regular и bold) одного и того же шрифта, и зарегистрировал их как один, автоматически переключаясь при смене начертания.
Для правильного вопроса надо знать половину ответа
Не путайте кэш и хэш.
Делать такое надо на бэкенде. Что у вас там есть - PHP или Node.js, на том и делать.
Но я бы сделал отдельный скрипт, который по крону обновляет данные в БД.
Для правильного вопроса надо знать половину ответа
Выведите через var_dump сформированную строку запроса и массив параметров. Убедитесь, что в массиве есть все параметры, указанные в запросе, и нет ни одного лишнего параметра.
Для правильного вопроса надо знать половину ответа
let playlist = [...element.querySelectorAll('[data-mp3]')]
.map(el => el.dataset.mp3);
А HTML вы генерируете с ошибкой. Во-первых, значения всех атрибутов тэга должны быть в кавычках, лучше в двойных. Во-вторых, id тэга не должен повторяться в пределах страницы.
Для правильного вопроса надо знать половину ответа
Фокус в оптимизации логических операций.
Если первый операнд AND имеет значение false, то результат будет false независимо от значения второго операнда. Соответственно, вычислять второй операнд смысла нет.
Аналогично, если первый операнд OR имеет значение true, то результат будет true независимо от значения второго операнда.
Если вам нужно, чтобы выполнялись обе функции, то решением, как ни странно, будет явный вызов обоих функций в теле цикла с записью результатов выполнения в переменные.
Для правильного вопроса надо знать половину ответа
Позиционирование fixed всегда будет размещать блок по абсолютным координатам экрана.
Могу посоветовать разместить в нужном месте блок-обёртку, в который добавлять дочерние блоки с предупреждениями.