Многошаговая форма php и jquery
Здравствуйте, я использую пошаговые формы step1,step2 и т. Д.
здесь я применяю jquery и перехожу на следующую страницу, но моя проблема в том, что я не получаю данные первого шага в запросе на следующем шаге. Вот только шаги на странице sinlge, они просто отображают скрытие и блокировку. Что я должен сделать, чтобы получить в php запросе все данные шага до завершения последнего шага?
<form>
<div class="step1">
<input type="text" name="firstname">
</div>
<div class="step2">
<input type="text" name="lastname">
<div>
<input type="submit" name="sub">
<input type="button" name="next">
<input type="button" name"previous">
</form>
здесь когда
2 ответа
Это зависит от вашей реализации PHP, но у вас есть два варианта:
1 - использование ajax для отправки данных обратно на сервер после каждого шага. 2- использовать отдельную страницу для каждого шага.
Нажав кнопку на шаге 1,
Вы вставляете в соответствующую таблицу и получаете вставленный идентификатор
Держите это вставленное значение id в каком-то скрытом типе в форме.
Нажав кнопку на шаге 2,
- вам нужно обновить соответствующий столбец и его значение во вставленных данных строки таблицы, указав свой идентификатор, который вы указали в форме.
Продолжайте в том же порядке, пока все ваши шаги не будут завершены.
<script>
$(document).ready(function() {
$("#next").click(function() {
var currentStep = $('#currentStep').val(); // based on the step you need use some switch or conditional block to pass data and store it accordingly.
// insertedId ==0 means you need to insert into table, if it not you need update the column in table
var formdata = {insertedId:$("#insertedId").val(),currentStep:currentStep, first:$("#first").val()};
$.ajax({
type: "POST",
url: "form.php",
dataType:'json',
data: formdata
})
.done(function( data ) {
var NextStep =parseInt(currentStep)+1;
$("#currentStep").val(NextStep);
$("#insertedId").val(data.insertedId);
$("#step"+currentStep).hide();
$("#step"+NextStep).show();
});
});
});
</script>
HTML:
<div id="step1">Step 1:
<input type="text" name="first" id="first" value="">
</div>
<div id="step2" style="display:none;">Step 2:
<input type="text" name="last" id="last" value="">
</div>
<input type="hidden" name="insertedId" id="insertedId">
<input type="hidden" name="currentStep" id="currentStep" value="1">
<button id="next">Next</button>