2012-04-04 2 views
1

Я довольно новичок в PHP, но применил свои предыдущие знания в области программирования, а также поисковые запросы в Интернете, чтобы донести меня до сих пор.Этапы ввода PHP-форм, ошибка цикла, возникающая

Я пытаюсь сделать пошаговую запись формы, где критерии введены на странице за страницей и только обновляет базу данных после заполнения всей формы. Я планирую приукрасить форму дальше, после того как я получу основные функциональные возможности, работающие над ней.

С момента, когда переменная name заполняется, однако после отправки второго этапа она возвращается к первому этапу ввода, хотя URL-адрес обновляется до этапа 3, из-за этого информация не может быть проанализирована до базы данных.

Я использую PHP v5, я видел решения этой проблемы с использованием AJAX, но я не использую его в этом экземпляре.

Благодарим вас за внимание и время.

<?php 

$stage = $_GET['stage']; 

//Starting on form 1 
$stage = 'one'; 

//get form details 
$name = $_POST['name']; 
$surname = $_POST['surname']; 

/* ---- Checking if you submitted and if you were on form one THEN set the form the stage2 in order to display the next form ---- */ 
if (isset($_POST['submitStage1']) && $stage == 'one') { 
$stage = 'two'; 
echo "checking sumbit from stage1"; 
} 
if (isset($_POST['submitStage2']) && $stage == 'two') { 
$stage = 'three'; 
echo "checking submit from stage2 going to 3"; 
} 

if (isset($_POST['submitStage3']) && $stage == 'three') { 
    $stage = 'three'; 
echo "Adding to database"; 

} 
?> 



<?php 
if ($stage == 'one') { 
echo $stage; 
?> 

<div style="width:100%; margin-bottom: 20px;"> Step_001</div> 

<form method="post" action="addperson.php?stage=2"> 
<input name="name" type="text" /> 
<input name="submitStage1" type="submit" /> 
</form> 

<?php 
} 
?> 





<?php 
if ($stage == 'two') { 
echo $stage; 
?> 

<div style="width:100%; margin-bottom: 20px;"> Step_002</div> 

<form method="post" action="addperson.php?stage=3"> 

<input name="surname" type="text" /> 
<input name="submitStage2" type="submit" /> 

</form> 

<?php 
} 
?> 




<?php if ($stage == 'three') { echo $stage; 

echo "Adding to database"; 


    $name = mysql_real_escape_string($_POST['name']); $surname = mysql_real_escape_string($_POST['surname']);  

// Add this product into the database now 
$sql = mysql_query("INSERT INTO testpeople (name, surname) 
     VALUES('$name','$surname')") or die (mysql_error()); 

    exit(); } ?> 

ответ

0

Удалить

$stage = 'one' ; 

Заменить

$stage = $_GET['stage']; 

С

$stage = isset($_GET['stage']) ? $_GET['stage'] : "one" ; 

Благодарности

:)

0

У вас есть это:

//Starting on form 1 
$stage = 'one'; 

после получения доступа к переменной $_GET, то есть он переписывает его каждый раз. Попробуйте положить это до получения, и он будет действовать по умолчанию, стараясь не перезаписывать его пустым $_GET['stage'].

Смежные вопросы