dポイントプレゼントキャンペーン実施中!

以下から誘導されてきました。
http://oshiete.goo.ne.jp/qa/7693984.html

PHP 5.3.8、Linux(詳細未定)、Apache(詳細未定)です。

PHPでDB(Postgres)から取得したデータを一覧表示し、
同じ画面にテキストボックスを1つ用意します。

テキストボックスに入力された値と表示しているデータを比較し、
一致していればその行の背景色を変えるか、印を表示する等して、
照合済みである事がわかるようにします。

最後に、照合されたデータを一括でPOSTしたいのですが、
ターゲットがiPhone、iPadである為、通信を減らしたいという要件があり、
照合中はブラウザ側でデータを保持し、通信を1回で済むようにする場合、
どのようにコーディングすればいいでしょうか。
また、PHP単体で難しい場合、JavaScript等、無料で実現できる方法があれば教えて頂きたいです。

A 回答 (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を利用するとコーディング量を減らすことが可能です。
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
教えて頂いた方法を参考に、目的の処理ができそうになってきました。

お礼日時:2012/09/13 18:20

一応、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だけで作れますし、最低限の要件(データを登録する作業)は満たせると思います。
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
なるほど、チェックボックスだとこんな方法もあるんですね。
ただ、今回はテキストボックスが要件でしたので、機会があれば試させて頂きたいと思います。

お礼日時:2012/09/13 18:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!