1

私は PHP にはかなり慣れていませんが、プログラミングに関する以前の知識とインターネット検索を適用して、ここまでたどり着きました。

私はステップバイステップのフォームエントリを作成しようとしています.1ページごとに基準が入力され、フォーム全体が入力されたときにのみデータベースが更新されます. 基本的な機能が動作するようになったら、フォームをさらに装飾する予定です。

現時点では name 変数が入力されていますが、第 2 ステージの送信後、URL がステージ 3 に更新されても、エントリの第 1 ステージにループバックします。このため、情報をデータベースに解析できません。

私は 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(); } ?>
4

2 に答える 2

0

あなたはこれを持っています:

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

変数にアクセスした後$_GET、つまり毎回上書きされます。getの前に配置してみてください。空白で上書きしないように注意して、デフォルトとして機能します$_GET['stage']

于 2012-04-04T13:43:07.113 に答える
0

削除する

$stage = 'one' ;

交換

$stage = $_GET['stage'];

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

ありがとう

:)

于 2012-04-04T13:51:13.133 に答える