Давайте рассуждать вместе.
Если у нас стоит проверка на не заполненные поля, то хоть за нажимайся ничего страшного.
А так алгоритм м.б примерно такой.
После первой формы и проверки на правильность ее заполнения как-то запоминаем пользователя (куки, сессия(но тут есть лимит на время ее жизни), вообще хорошо если есть авторизация). По идее можно сохранить идентификатор и ответы в БД
После второй формы сначала проверяем есть ли результаты от первой формы, потом валидность данных и снова где-то сохраняем. По идее лучше всего в БД особенно если ответов много, а пользователя по кукам. Ну и так до самого финиша
а vertical-align: middle; для выравнивания текста по вертикали применим только к ячейкам таблицы либо блокам со свойством display: table-cell (это второй вариант)
На вскидку 2 варианта.
1 Вытаскиваем все из таблицы, строим массив и гуляем по нему (рекурсия).(Если таблица не большая не критично)
2 Две процедуры. (процедура+ ф-я MySQL). Ну или если совсем извратиться то одна процедура а там... While.
На счет все 1 vs 2 варианта. Не факт, что вариант 2 проиграет(особенно если таблица большая). подготовленные выражения, + индексы запросы будут элементарны