2009-04-20 11 views
2

もちろん、私たちはバックエンド言語にとらわれないHTMLフォームとGET/POSTデータを扱っています。 AskerはPHPとPythonに最も堪能です。ワンクリックに基づいて値を切り替えるような、アイテムのリスト(おそらくはページ)を扱う?

例: イベント管理には、利用可能なすべてのユーザーをリストするイベント管理のHTMLページがあります。 各名前の横には、イベントの出席を表すグラフィック/ウィジェットが表示されます。 リストの人の出席状況を更新するにはどうすればよいですか?

私が最初に考えた方法の1つは、単に出席用のチェックボックスを使用することでした。ただし、チェックされていないボックスはフォームデータとともに に送信されません。基礎となるロジックは、 の出席者ステータスをFALSE/OFF/Not Attendingに切り替える必要があります。リストが改ページされた場合、これは壊れます!

私が考えていた2番目の方法は、各名前の隣にグラフィック/ボタンを使用していました。各 ボタンが送信ボタンになることは適切ですか?フォーム要素に複数の送信ボタンがあることは許されていますか?または、それぞれ ボタン/ Personを独自のフォーム要素にラップする必要がありますか?

答えて

1

非常に簡単な解決策は、チェックボックスの方法に付いて、送信される最小/最大値の値を格納するいくつかの隠しフォーム要素を追加することです。そうすれば、あなたのロジックは、ページにないすべての人を壊すことなく、「欠落している」チェックボックスを「オフ」として扱うことができます。

複数の送信要素を1つのフォームにまとめることはお勧めしません。別の方向に進みたい場合は、ajaxを使用する各行にその行の人の出席を切り替えるリンク(テキスト/グラフィック/ボタン)があるかどうかを調べることができます。そうすれば、ユーザーは明示的に「提出」する必要はありません。インターフェース上で切り替えると、バックグラウンドで更新が行われます。

+0

良い答えです。私はここにあるものを拡張したいと思います。これは数値キーに基づいており、Personレコードは連続しています。それ以外の場合(ファーストネームでフィルタリング/ソート)、このメソッドはすべてのPeople IDのリストをページに含める必要があります。それはちょっとしたようですが、うまくいくかもしれません。 –

+0

さて、最小値/最大値は、ページが並べ替えに使用していたものであってもかまいません。フォーム処理ページがデータから有効なIDのリストをフェッチするのに使用されている限り、名前を最小値/最大値として渡すこともできます。必ずしも連続している必要はありません。有効なIDのリストを選択する際に境界を設定するためにmin/maxを使用するだけで、チェックボックスの値のリストと照合することができます。 –

+0

私の上記のコメントに関する追加の注記は、ソート方法がどのようなものかを表す3番目の隠し値が必要になります。例えば、sort = "lastName"、min = "Adams"、max = "Carson"フォーム処理ページで、姓がAdamsとCarsonの間にあるデータベースのすべての人物IDを選択します。 –

0

他の「レコードの編集」ボタンまたは「この行の削除」ボタンと同様に、トグルボタンは、更新/トグル/削除の一意のレコードIDを持つ送信ボタン/グラフィック要素ですvalue属性。

フォームハンドラは、送信ボタンのvalue(一意のname属性が必要な場合があります)を確認するだけで済みます。

私が間違っている場合は私を修正してください。しかし、これは少なくともHTML4とXHTML1では大丈夫です。

+0

私はそれが有効だと思うし、うまくいくはずですが、おそらくユーザーにはいくらか迷惑になり、1つの行をトグルするたびに完全なリロードが行われます。 –

関連する問題