2

1つのページ(会社のデータベースにスタッフを追加するために使用されるページ)に2つのフォームがあるため、2つの異なる送信ボタンがあります。

最初の送信では、ユーザー名(コマンドラインプログラムを介して自動的に入力される名前と教員)を送信します。もちろん、2番目のフォームに必要な情報を入力している間、この情報を保持してユーザーに表示したいと思います。これは正常に機能します。

問題は、2番目の形式にエラーがあるかどうかです。追加は失敗し、エラーメッセージが表示されますが、最初のフォームのすべての情報が消去されます。

以下のセッション変数は、最初のフォームが(エラーなしで)送信された場合に設定されます。

$_SESSION['name'] = $info['displayName'];
$_SESSION['faculty'] = $info['ou']; 
$ownerId = trim(mysql_prep($_POST['ownerId']));
$_SESSION['ownerId'] = $ownerId;

ただし、2番目のフォームが送信された場合、これらの変数が消去されたとき。私の理解では、これは最初のフォームが技術的に提出されなくなったために発生します。しかし、繰り返しになりますが、それはセッション変数のポイントではありません-消去されるべきではありませんか?

編集:おそらく、すべてのセッション変数の設定を解除することを追加すると便利ですが、2番目のフォームがエラーなしで送信された場合に限ります。これはあまり関係ないと思いますが

4

2 に答える 2

3

私が考えることができる2つのアプローチがあります

if($POST['form_name'] == 'form1')
{
   //set my session variables
}
else  //for the second form
{
  //do something else
  //then session is intact
}

フォームの名前を格納するために、フォームに隠しフィールドを配置していました。送信ボタンの名前を使用するものもあります。

もう1つのアプローチは、2つのフォームに1つのボタンを使用せずにそれを行う方法をまだ考えている他のフォームを再作成することです

<form name="form1" action="POST" action="xxx">
    <input type="text" values="<?php print($_POST['firstform_val_1']) ?>" name="val_1" />
</form>


<form name="form2" action="POST" action="xxx">
  //these hidden fields preserve the formal values and make sure they are reposted in this second form
  <input type="hidden" name="firstform_val_1" value="<?php print($_POST['firstform_val_1']) ?>" />
  <input type="hidden" name="firstform_val_2" value="<?php print($_POST['firstform_val_2']) ?>" />

  <input type="text" name="secondform_val1" />
  <input type="submit" name="form2" />
</form>

それがアイデアです。私はこれを二階から手に入れたばかりで、テストしていません。最初のフォームでは、前の値は、2 番目のフォームの非表示フィールドで複製された値によって再入力されます。

幸運を

于 2012-06-25T17:49:04.083 に答える
0

フォームが php ページによって生成されている場合は、次のスクリプトを使用して、以前に送信されたフィールドに自動入力できます。

短いタグが有効。

<input type="text" name="firstName" value="<?=isset($_POST['firstName'])?$_POST['firstName']:'';?>" ></input>

短いタグはありません。

<input type='text' name="firstName" value="
<?php
    $value=isset($_POST['firstName'])?$_POST['firstName']:'';
    echo($value);
?>
"></input>
于 2012-06-25T18:12:28.887 に答える