2

PHP/MySQL を使用して、最終的に MySQL データベースへの送信で終了する多くの条件付きロジックを含むかなり広範なフォームを作成する必要があります。したがって、基本的に、ユーザーはラジオ ボタンで最初の選択を行い (写真を「選択」しているため)、その送信に基づいてフォームの次の「ページ」に移動します。フォームの最後にすべての入力を収集し、データベースの行に入力するため、その送信もセッションまたは Cookie に保存する必要があります。私のアプローチはどうあるべきですか?現在、POST データを SESSION に格納し、最後にデータベース行に入力するフォームを作成していますが、ページからページへの条件付きロジックを導入するとすぐに、セッションが中断され、送信されません。どんな助けでも大歓迎です。

4

3 に答える 3

2

私は250問の心理テストシステムでこれを正確に行いました。よく考えれば、それほど難しくはありません。私が使用した解決策は、個々のページを実行してセッションに投稿することを心配するのではなく、スタックされたdivで出力することでした-それはよりクリーンです。送信ボタンはすべてのdivにありますが、最後のdivにのみ送信します。関数は次のdivを表示し、他のすべての「ページ」をクリックすると現在のdivを非表示にします。変数とPHP数学を使用して、さまざまな組み合わせでテストが行​​われるように設定できます。たとえば、250の1ページ、50の5ページなどです。最も難しいロジックは、適切な数の質問を含むページを作成し、作成することです。 divがshow/hideスクリプトで機能するように効果的にタイトルが付けられていることを確認してください。私の場合、Jqueryの表示/非表示機能を使用しています。チャームのように機能します。

このソリューションは1ページを使用するため、値が前後に移動するときに値が「忘れられる」ことを心配する必要はありません。私の場合、ユーザーに戻るためのUIを提供していないため、ユーザーが戻ることを許可していません。ブラウザをバッククリックすると、ページを離れるという警告が表示されます。ただし、ボタンなどのUIを含め、ブラウザの戻るボタンを使用して戻る機能を設定するなど、いくつかの異なる方法を使用して戻ることができます。大きな副次的な利点は、読み込みがほとんどなく、ページの変更がユーザーにとって瞬時に行われることです。

于 2010-10-13T18:59:12.283 に答える
2

古典的な「ウィザード」インターフェースのように聞こえます。簡単なグーグル検索でこれが表示されましたが、それが良いかどうかはわかりません.

http://www.phpclasses.org/browse/file/8308.html

于 2010-10-13T19:31:17.750 に答える
1

ウィザードの最後にすべてのデータを 1 回の更新で保存する利点は、単純なことです。各ステップの後に DB に書き込む利点は、ユーザーが後で戻ってウィザードを終了できることです。現在のユーザー セッションに縛られません。

「最後に挿入」アプローチを使用する傾向がある場合は、JS を使用して単一の物理フォームのセクションを表示/非表示にするという bpeterson76 のアイデアをお勧めします。ユーザーの戻るボタンを制御できることを確認してください。そうしないと、ユーザーはすべての回答を失う可能性があります。

于 2010-10-13T19:46:28.660 に答える