Так если нужная библиотека подключена, то для PDO без разницы, какая это база данных: MySQL, PostgreSQL, Firebird, или что-то ещё. Базовый набор SQL-команд везде одинаков (т.к. определяется стандартом SQL), а особенности синтаксиса конкретной СУБД есть в её мануале.
bind у тебя записан неправильно. Так что реально он ничего не делает. Да и не должно там bind быть: ты уже установил все нужные обработчики, зачем ставить что-то ещё?
У тебя unbind в обработчике события 'click' для #down_button снимает обработчик события 'click' для this. Но this в этом месте - это и есть #down_button. Т.е. обработчик сам себя отключает. И обратно он нигде не включается. Даже если бы bind был записан правильно - обработчик уже отключен и bind выполнен не будет.
Снимать обработку события внутри обработки этого события - это не лучшая практика.
Ни надо никаких лишних установок/снятий обработчиков. При наступлении события в обработчике проверяешь - должен ли он реагировать на него. Должен - выполняешь действия, не должен - выходишь из обработчика. Собственно, именно так это у тебя и работает - после исправления.
Задать (обязательно) для html и body css-параметр "height: 100%;", а для модального окна, например, "max-height: 90%;" - автоматически будет подстраиваться под размер на маленьких экранах.
Алгоритм перебирает все варианты. Но проблема в том, что для N слов существует 2 в степени (N-1) вариантов. Т.е. для 50 слов будет 562949953421312 вариантов.
Выложил в ответ выше код, сортирующий варианты по длине строк.
Вариант Petroveg действительно отлично работает, но, ИМХО, стили там излишне переусложнены. А вот вариант Fesor работает только для фиксированной ширины заголовка.
Я в добавил в свой ответ ссылку на codepen со своим вариантом блочной вёрстки - за счёт добавления одного пустого div'а получаем куда более простые стили, чем у Petroved.
Похоже, с парадоксом дней рождения Вы не знакомы. Вероятность коллизии равна квадратному корню от вероятности появления значения. И при 48 битах вероятность коллизии будет равна 1/16777216.