Попробуйте multiform, но будьте осторожны, так как он все еще находится в состоянии разработки.
Если вы хотите сделать это самостоятельно, запишите переменную хранения step в форме, которая представляет текущий шаг, и приращениеэто каждый раз, когда вызывается эта функция.
// if **step** is not set, make it 0, else increment it by 1.
$step = isset($form_state['values']) ? (int)$form_state['storage']['step'] : 0;
$form_state['storage']['step'] = $step + 1;
Используйте регистр переключения для отображения элементов формы для текущего шага.Если это не последний шаг, отобразите следующую кнопку, иначе нажмите кнопку подтверждения.Переместите значения из $form_state['values'] to $form_state['storage']
. В функции отправки выполните вставку базы данных, если это последний шаг, в противном случае просто верните.