Поскольку шаблон формы - величина постоянная, я бы всю форму сделал бы картинкой (background). А в "клеточки" вставлял нужные данные из веб-формы с абсолютным позиционированием. Это самый быстрый и возможно правильный способ, тк сам процесс конвертирования HTML в PDF - вещь сама в себе.
Вроде как ничего сложного, либо я не понял вопроса. Добавляем таблицу в бд с полями user_id, page_id, redirect_to. При посещении страницы сначала проверяем наличие информации в бд по ключу user_id - page_id. Если такой записи нет, заносим информацию в эту таблицу. Если есть - используем ссылку в поле redirect_to для текущего пользователя и выполняем редирект.
Если в посте только одна картинка, вы можете вообще не хранить ее название. Сохраняйте картинку с именем равным номеру или коду поста, и ссылайтесь на нее. Исключаем лишний запрос к бд.
1. У вас должно быть два сервера: один для разработки (локальный), второй боевой (vds).
2. Установите любую IDE, например от JetBrains. В ней настройте деплой.
3. Как только на локальном сервере внесли новый код, убедились, что он работает правильно, нажимаете кнопку деплоя в IDE.
4. Вы у цели.
Это сценарий для новичков. Далее по мере вашего развития вы сами дойдете и до докера, и до много чего ещё интересного. Удачи.
Что такое модальное окно в вебе? Это некий слой, который по умолчанию скрыт (display:none), а по срабатыванию триггера он отображается (display:block).
Как вариант можно сделать общую таблицу transport, содержащую поле name для всех видов транспорта. А ваши таблицы подключать к общей через join по необходимости.
В этом случае поиск будет намного быстрее и проще. И только по одной таблице.
Разделяйте задачу на части до тех пор, пока вы не сможете точно сказать, сколько времени у вас займёт выполнение каждой из маленьких частей. Сначала вплоть до абсурдного: написать абзац текста - 2 мин, сделать общий макет страницы - 1 час, добавить карусель - 15 мин и т.п. Далее приноровитесь и сможете адекватно давать оценку трудозатрат.
Самое главное - не давайте цифр заказчику сразу. Ну типа - "ой, задача фигня, я ее сделаю за пару часов". Лучше скажите - мне нужно пара часов на оценку трудозатрат, я с вами свяжусь.