0

多くのラジオセットを含む複数ステップの調査フォームを処理しています。

いくつかのデフォルト状態があります

ユーザーはそれらを操作して自分の好みを選択します。

クライアントは、ブラウザーの戻るボタンまたはサイド ナビゲーター リンク (調査の前の段階を指す一連のリンク) を押したときに、ユーザーが以前に選択した無線状態を取得する必要があります。

ナビゲータは次のようになります。

<ul>
<li><a href="index.php?site=form1">Step1</a></li>
<li><a href="index.php?site=form2">Step2</a></li>
<li><a href="index.php?site=form3">Step3</a></li>
</ul>

調査全体でデータを収集する $_SESSION は 1 つだけです。

$_SESSION から直接情報をロードできることはわかっていますが、リクエストがナビゲーターのリンク/戻るボタンから来た場合は、デフォルトの状態を置き換える必要があります。

4

3 に答える 3

0

非常に単純化された可能な解決策:

<?php
   session_start(); // this needs to be at the top of all pages using $_SESSION (before anything else) else $_SESSION will always be empty
   if($_POST['vehicle']){
      $_SESSION['checkbox1'] = $_POST['vehicle'];
   }
print_r($_SESSION); // remove this line after testing. It will show you the contents of the $_SESSION, which is handy for seeing when variables are set within it
?>

<!DOCTYPE html>
<html>
<body>
<form action="" method="post">
   <input type="checkbox" name="vehicle" value="Bike"<?php if($_SESSION['checkbox1'] == "Bike"){ echo " checked"}?>>I have a bike<br />
   <input type="checkbox" name="vehicle" value="Car"<?php if($_SESSION['checkbox1'] == "Car"){ echo " checked"}?>>I have a car <br />#
   <input type="submit" value="Go" />
</form>
</body>
</html>

非表示の入力領域の最初のページで生成された一意のIDを追加できます。これは、投稿されたときにセッション変数名の一部を形成する可能性があります。そこから、情報はその変数名の下で$ _SESSIONにインデックス付けされ、データを引き出したり、新しいフォームセッションを作成したりするのが簡単になります。

私があなたを失っていないことを願っています。

于 2012-09-25T12:36:09.020 に答える
0

これには主に 2 つのアプローチがあります。基本的に、ラジオの選択された状態をフォームの異なるページ間で保存する必要があると言っています。

そのため、送信せずに以前のページに戻った場合でも、選択肢は同じである必要があります。

サーバー側で PHP を使用する方法と、クライアント側で Javascript を使用する方法の 2 つの主要なアプローチがあります。

PHP

ウェブサイト上の任意のリンクを設定してフォームを送信し、ラジオの選択を保存できます。その後、フォームを作成するときに、以前に選択した値を確認できます

この情報は保存できますが$_SESSION、ページを変更するたびにフォームを送信する必要があります (リンクを変更してこれを行うことができます)。

Javascript

選択内容を記憶し、ユーザーのブラウザーに Cookie として保存する JavaScript を記述できます。これは、ユーザーがボタンをクリックするたびに更新されます。ページが読み込まれると、JavaScript は Cookie (またはローカル ストレージ) をチェックし、以前のオプションを読み込みます。

彼らがフォームを終了して送信したら、JavaScriptをクリアします

基本的な例

$('form input[type=radio]:checked')

より多くの情報が得られたら、この回答をさらに具体化します

于 2012-09-25T11:26:46.697 に答える
0

フォームを投稿した後、セッションに値を保存できます。前のページに再度アクセスする (または最初にロードする) ときに、セッションの値を読み取り、指定された無線をチェックします。初めてページにアクセスした場合、セッションにはデータがないため、誰もチェックされません。

JavaScript と Cookie を使用して、選択した値をアクティブに保存することもできます。

于 2012-09-25T11:27:02.640 に答える