電子書籍の厳選無料作品が豊富!

こんばんは。プログラム初心者です。
今、PHPとDBを使用したプログラムを組んでいます。
PHPはsmartyを使用してます。

そこで画像投稿画面を作成していまして、
DBと連動したプルダウンを作成したいのですが、
全然作れなくて困っています。

やりたいことはHTML側で元々記述してあるセレクトした値を飛ばして
DB接続し、その値をそのままSQLに組み込んで
紐づいたデータをそのままプルダウンで表示させたいです。
こんな感じです↓
http://jsajax.com/NestedDropDown2Article686.aspx

phpだけだとリロードしたりすることになるので、
JavaScriptを使用すると思いここに質問させていただいてます。

恐らく、JavaScriptでHTMLのvalue(値)を取得し、
別のPHP(DB接続とSQLの記述をしたもの)に値を渡して、
そこから元のPHPに戻るといったことをやればいいのでは…
と思っていまして、接続、SQL用の別PHPは作成しました。
(非同期通信って云うんですかね)

その際、2次元配列(配列の中は連想配列)で取得していて、
valueはその内の1つ、実際テンプレート側に
表示する文字は別の1つを表示させたいです。

SQLを流す側のPHPで配列は
【0】
[zip]
[town]
【1】
[zip]
[town]

といった感じの二次元配列を取ってます。

それを
<option value="{$zip}">{$town}</option>
みたいな形で取れた分、プルダウン作成したいです。
<option value="">選択してください</option>
のプルダウン初期表示も欲しいです。

色々調べてみたんですが、
JavaScriptが難しくてhtmlの値すら取ることができず、
全然できません。どのように記述したらよろしいでしょうか?
他で使用しているため、j-queryは入れてあります。

ご教授のほど是非よろしくお願いします。

A 回答 (2件)

意図がうまくつたわっていないかもしれないので・・・



>サブミット

これはformで<input type="submit" ...
をつかって明示的にサブミットすることをおすすめています。

もちろんjavascriptで代替的にサブミットすることは可能です。
その際は、どういう状態になったらサブミットしていいのかを
コーディングして、条件が一致したら処理をするというのが妥当です。

たとえばセレクトボックスA、Bが初期値ではなく、テキストボックス
x,yに値がはいっている・・・など条件を考え、それに付随して
オブジェクトにonchangeトリガーをはっておくということです。

javascriptについて理解が浅いのであれば勉強してくださいとしか
いいようが・・・

またajaxについてはご指摘の通り非同期処理なので、特定の
セレクトボックスのonchangeイベント処理だけ気にしておけば十分です。
zipを選ぶと住所がでるとか。まぁその程度
    • good
    • 0
この回答へのお礼

だいぶお返事遅れて申し訳ありません。
回答ありがとうございます。

なんか少し勉強してやってみたらどうにかこうにか
できました。難しいですね。

もう少し勉強してみます。
ありがとうございました。

お礼日時:2010/01/28 01:53

考え方は3つ。



(1)Ajaxで処理する。
(2)全てのデータをあらかじめ読込んでおき、必要にあわせて表示する
(3)フレーム系の処理

(1)>(2)>(3)の順でおすすめ
(2は理論的には可能だが大きなデータはお勧めできない、
3はいまどきフレームっていうのは・・・)

javascriptは所詮環境依存なのでやはりきちんと毎回サブミットして
やるのがまっとうなやり方だと思います
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

AJAXが確かに便利で良さそうですね。

サブミットですが、プルダウンで
どのように行えば良いのでしょうか?

今作成しているのが、各項目ごとに
テキストボックスやプルダウン諸々があって、
それを記入後にサブミットといった形を取りたいので
プルダウン記述してすぐサブミットといった形だと
おかしなことにならないのでしょうか?

あとjavascriptでの値の取り方、
それを経由してのjavascript側から
php側での値の取り方といったこともよくわかりません。

お手数ですが、回答いただけるとありがたいです。
よろしくお願いします。

お礼日時:2010/01/20 16:51

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