- ベストアンサー
PHPで通信せずに入力データを照合、一括送信
- PHPでDBから取得したデータを一覧表示し、入力された値と比較して照合済みを表示する方法
- iPhoneやiPadへの通信を減らすために、ブラウザ側でデータを保持し、一括で照合結果を送信する方法
- PHP単体で難しい場合は、JavaScriptなどを利用して無料で実現する方法
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 JavaScriptを併用すれば実現可能かと思われます。 一覧から取得したデータを、 <input type="hidden" name="data[]" value="<?= $row['value'] ?"> みたいな感じでデータ保持用のhidden項目を用意してあげます。 一つ一つのtextに入力があった場合、同列のhidden要素のvalueと比較し、一致した場合背景色を変えたり印を表示します。 (<input type="hidden" name="match[]">のようなhiddenに一致したかしないか保存すると良いと思います) 最後にそのformをpostすればmatchの配列が一致したか否かを持っているのでサーバ側で処理が出来ると思います。 1レコード毎に以下の要素が用意されるイメージです。 入力値:<input type="text" name="inp[]"> <input type="hidden" name="data[]" value="0001"> <input type="hidden" name="match[]" value="0"> JavaScriptは 入力値に入力があったらそのレコードのdata[]のvalueと比較し、同じだったらそのレコードのmatch[]のvalueを1にする感じです。 要素の選択等簡単に行うのであればjQueryを利用するとコーディング量を減らすことが可能です。
その他の回答 (1)
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
一応、PHPだけで作れそうな最低限の機能の例を。 >PHPでDB(Postgres)から取得したデータを一覧表示し、 >印を表示する等して、 >照合済みである事がわかるようにします。 >最後に、照合されたデータを一括でPOSTしたいのですが、 PHPで以下のようなHTMLを出力してください。 <form action="送信先" method="POST"> <table> <tfoot> <tr><td colspan="2"><input type="submit" value="送信"></td></tr> </tfoot> <tbody> <tr><td><input type="checkbox" name="id[]" value="1"></td><td>ID 1のデータ</td></tr> <tr><td><input type="checkbox" name="id[]" value="2"></td><td>ID 2のデータ</td></tr> <tr><td><input type="checkbox" name="id[]" value="3"></td><td>ID 3のデータ</td></tr> <tr><td><input type="checkbox" name="id[]" value="4"></td><td>ID 4のデータ</td></tr> </tbody> </table> テキストボックスとの照合は無理ですが、 表示内容を目視で確認し、該当する項目があればチェックボックスにチェックを入れ、 送信ボタンを押せば、そのチェックがついたデータだけが送信されます。 これならPHPだけで作れますし、最低限の要件(データを登録する作業)は満たせると思います。
お礼
ご回答有難うございます。 なるほど、チェックボックスだとこんな方法もあるんですね。 ただ、今回はテキストボックスが要件でしたので、機会があれば試させて頂きたいと思います。
お礼
ご回答有難うございます。 教えて頂いた方法を参考に、目的の処理ができそうになってきました。