1

複数の「ステージ」が含まれる非常に複雑なフォームがあります。

各ステージには、ユーザーが無数の行を追加するフォームがあります。ユーザーが「続行」をクリックするたびに、これらのフォームはデータベースに保存され(各「ステージ」にはデータベース内に独自のテーブルがあります)、次のステージが表示されます。

以前のフォームを取得するためにユーザーが「戻る」を押すのが心配です(ユーザーがミスなどをした場合)。

この問題を解決するために私が考えることができる唯一の3つの方法は次のとおりです。

  1. 人々が押し返すことを禁止します。もしそうなら、最初のフォームに直接送ってやり直してください。
  2. フォームページが要求されたら、データベースを確認してください。すでに行がある場合は、それらの行を削除して、現在のフォームでユーザーを再起動します。
  3. [可能性-codeigniterのform_validationライブラリを使用しているため、これはさらに困難になります]ユーザーが押し返したときにデータベースを確認します。現在の値を取得し、デフォルト値としてフォームに入力します。次に、送信時に行を削除し、フォームの値に置き換えます。

どうやってこのような形をしますか?いくつかのフォームのためだけに、ロジックの量が本当にばかげています!はは、これを行うためのより良い方法はありますか?上記の3番が最良の選択肢だと思いますか?

ありがとう

4

2 に答える 2

2

私はさまざまな場面で3番目のオプションを使用しましたが、フォームのサイズによっては、これまでCodeIgniterの検証を使用したことがないことは言うまでもなく、これは確かに圧倒される可能性があります。

可能であれば避けるべき最初の2つのオプションから多くの問題が発生します[修正できない間違い、毛深いデータベースロジックなどを含みますが、これらに限定されません]が、ユーザーを満足させることの見返りは非常に貴重です。

お役に立てれば!

石工

ユーザーが戻れない場合にどう思うかを視覚的に要約するために、この画像を含めました。

http://momentumshift.com/wp-content/uploads/2011/05/senior_woman_using_computer_mon142089.jpg

于 2012-06-26T17:00:28.870 に答える
1

1と2はどちらもUXにとって非常に悪いものです。3が最善の策であり、db構造によっては、削除して再挿入する代わりに更新できる場合があります。

複数のフォーム送信を区別するために、私が想定しているキーを持っている場合は、insert on duplicate key updatedbエンジンに応じて次のようなものを使用できます。

于 2012-06-26T17:02:04.550 に答える