No.4ベストアンサー
- 回答日時:
#2です
参考までにソースを書いてみました。
オラクルのsql文はよくわからないので適当です。
ホンチャンでは連想配列への代入のところはSQLで処理します。
#2でも書きましたが、各selectはonChangeでsubmitするだけの
処理をいれておくと、最悪javascriptが動かなくてもsubmitを
手動でできるため、汎用性があります。
Ajaxで検討なさるのであれば、回答は識者におまかせします。
<?PHP
//都道府県の設定
$a_todohuken=array("tokyo"=>"東京","osaka"=>"大阪","other"=>"その他");
$head="<hr><a href=\"".$PHP_SELF."\">検索</a>>";
$todohuken_options="";
foreach ($a_todohuken as $key => $val){
if($key==$_GET["todohuken"]) $selected="selected";
else $selected="";
$todohuken_options.= "<option value=\"".$key."\" ".$selected.">".$val."\n";
}
if($_GET["todohuken"]!=""){
$query="SELECT `city_id`,`city_name` FROM `city_table` WHERE `todohuken`='".$_GET["todohuken"]."';";
//SQL処理して$a_cityに配列でうける
$head.="<a href=\"".$PHP_SELF."?todohuken=".$_GET["todohuken"]."\">".$a_todohuken[$_GET["todohuken"]]."</a>>";
if($_GET["todohuken"]=="tokyo") $a_city=array("shinjuku"=>"新宿区","shibuya"=>"渋谷区","other"=>"その他");
if($_GET["todohuken"]=="osaka") $a_city=array("osaka"=>"大阪市","sakai"=>"堺市","other"=>"その他");
$city_options="";
if(is_array($a_city)){
foreach ($a_city as $key => $val){
if($key==$_GET["city"]) $selected="selected";
else $selected="";
$city_options.= "<option value=\"".$key."\" ".$selected.">".$val."\n";
}
}
}
if($a_city[$_GET["city"]]=="") $_GET["city"]="";
if($_GET["city"]!=""){
$query="SELECT `station_id`,`station_name` FROM `station_table` WHERE `city`='".$_GET["city"]."';";
//SQL処理して$a_stationに配列でうける
$head.="<a href=\"".$PHP_SELF."?todohuken=".$_GET["todohuken"]."&city=".$_GET["city"]."\">".$a_city[$_GET["city"]]."</a>>";
if($_GET["city"]=="shibuya") $a_station=array("shibuya"=>"渋谷","yoyogi"=>"代々木","ebisu"=>"恵比寿");
if($_GET["city"]=="shinjuku") $a_station=array("shinjuku"=>"新宿","shinokubo"=>"新大久保","takadanababa"=>"高田馬場");
if($_GET["city"]=="osaka") $a_station=array("shinosaka"=>"新大阪","umeda"=>"梅田","nanba"=>"難波");
if($_GET["city"]=="sakai") $a_station=array("sakaishi"=>"堺市","nakamozu"=>"中百舌鳥","minato"=>"湊");
$station_options="";
if(is_array($a_station)){
foreach ($a_station as $key => $val){
if($key==$_GET["station"]) $selected="selected";
else $selected="";
$station_options.= "<option value=\"".$key."\" ".$selected.">".$val."\n";
}
}
}
if($a_station[$_GET["station"]]=="") $_GET["station"]="";
if($_GET["station"]!=""){
$query="SELECT `etc_info` FROM `info_table` WHERE `statition`='".$_GET["station"]."';";
//print $query."<br>";
//SQL処理して駅の情報を得て、表示する
$head.=$a_station[$_GET["station"]].">";
$body.=<<<eof
情報を表示する
<hr>
eof;
}
$head.="<hr>";
$body.=<<<eof
<form action="$PHP_SELF" method=get>
<select name="todohuken" onChange="this.form.submit()">
<option value="">======県名=======
$todohuken_options
</select>
<select name="city" onChange="this.form.submit()">
<option value="">======市名=======
$city_options
</select>
<select name="station" onChange="this.form.submit()">
<option value="">======駅名=======
$station_options
</select>
<input type="submit" value="search">
</form>
eof;
print $head;
print $body;
//phpinfo();
?>
No.3
- 回答日時:
どちらかというと、Ajaxの方が最適なパターンだよな。
非同期通信で、画面再描画もせずに、選択された項目を元にDBから検索してきて、リストのデータだけ更新可能。
難易度、格段に上がるけどね(=-=;
No.2
- 回答日時:
これはあきらかにPHPの領分ですね。
もちろんjavascriptでも書けないことはないですが
すべての都市名、市名、駅名をhtmlに書いておく
必要があり、膨大な量のデータのhtmlになります。
その手のデータを管理するのはsqlにまかせ、
phpをつかって必要なときにデータを呼び出せばよい
でしょう。
具体的には一番左のselectで選択したらonChange
イベントで、submitし、そのデータをもとにsqlで
検索、結果として真中のselectに選択肢を表示
というながれになります。
(javascriptが使えないクライアントのために
submitも用意しておいた方がベター)
PHPを前提にこんな感じ
print <<<eof
<form action="$PHP_SELF" method=get>
<select name="todohuken" onChange="this.form.submit()">
<option value="">======県名=======
<option value="tokyo">東京
<option value="osaka">大阪
</select>
<select name="city" onChange="this.form.submit()">
<option value="">======市名=======
</select>
<select name="station" onChange="this.form.submit()">
<option value="">======駅名=======
</select><br>
<input type="submit" value="search">
</form>
eof;
ここで$_GET["todohuken"]の値を元に
オラクルからcityの情報を受け取り、データを流し
こめばいけると思います。
(いくつか課題はありますが、やってくなかで解決
してください)
この回答への補足
すみません。上記の書き方だとJavaScriptの関数を設定しなくていいんですか?(読みに行く)素人でそれぞれの項目でOnChangeの設定をするのかな?と思っていました。もうパニック状態です。
補足日時:2005/10/10 22:33No.1
- 回答日時:
6桁を3つのプルダウンだったら、1つめの2桁で
2つ目の数値が変更されることはないでしょう?
どういうような仕様を想定しているのかもっと
ハッキリさせないと回答のしようがないかと。
たとえば1つ目のプルダウンは00から99まで
100個の選択肢なのでしょうか?
2つめと3つめはどうなんでしょう?
1つめと連動して2つめ、3つめはどうすれば
いいのでしょう?
この回答への補足
変な聞き方をしてしまいました。申し訳ないです。Oracleからデータを引き出して、PHPで書いています。今回の件はJavaScriptかな?と思っています。例えば一つ目のプルダウンが都道府県で「大阪府」を選択したら2つ目のプルダウンで都市名が「大阪市」「堺市」・・・となり3つ目のプルダウンでそこの町にある駅名を表示する・・・あのイメージなのですが。どうやったら良いのでしょうか・教えて下さい。
何分経験浅いものですから細かく教えていただければうれしいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel VBAプルダウンの値を変えながら2枚ずつ印刷する方法? 4 2022/05/27 13:04
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/10/25 09:26
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2022/04/01 12:11
- Excel(エクセル) Excelのプルダウンメニューの内容を人によって可変する方法 2 2023/03/28 14:52
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- 宅地建物取引主任者(宅建) エクセル 1 2023/01/31 21:29
- Excel(エクセル) Excelで質問です。 詳細(写真) ①黄色の部分を全てプルダウンを設定する。 ②リストはG列 ③リ 1 2023/06/16 21:54
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/06/10 11:06
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プルダウン 項目が多いので先頭...
-
javascriptでselectボックスの<...
-
Selectの中身をfor文で入れる
-
セレクトを全て選択されていな...
-
CSVファイルを読みこみ、プルダ...
-
SelectのLabelの値を取得するには
-
リストボックスの項目の順番を...
-
onFocusOutが複数回呼ばれる!
-
現在時刻を取得してフォームのs...
-
JavaScriptで以下のようなメー...
-
正規表現で複数マッチ条件で悩...
-
return trueとreturn falseの用...
-
<JavaScript>tableタグを入力不...
-
3桁区切りのカンマをつけたい...
-
【jQuery】input nameの文字列...
-
ラジオボタンのチェックが外れ...
-
JSのみで入力→確認→メールで送...
-
ラジオボタンと連動して文字列...
-
hiddenのvalueの値を変えたい
-
チェックボックスのON/OFFでVal...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウン 項目が多いので先頭...
-
Selectボックスの幅を自動で広...
-
Selectの中身をfor文で入れる
-
html selectの内容を初期値に戻す
-
CSVファイルを読みこみ、プルダ...
-
セレクトを全て選択されていな...
-
ブラウザの戻るボタンを押した...
-
JQuery selectが反映されない
-
セレクトの値を取得できない
-
jQuery セレクトボックスで選択...
-
現在時刻を取得してフォームのs...
-
テーブルにおける行(セルにプル...
-
document.form で nullまたは...
-
javascriptでの2つのプルダウン...
-
リストボックスの項目の順番を...
-
onFocusOutが複数回呼ばれる!
-
javascriptでselectボックスの<...
-
プログラムがうまく動きません...
-
プルダウンとテキストの連動
-
selectタグに直接onChangeを書...
おすすめ情報