- PR -

PHPとjavascriptの連携(データ受け渡し?)

投稿者投稿内容
緑茶
常連さん
会議室デビュー日: 2008/04/08
投稿数: 21
投稿日時: 2008-09-26 17:47
PHPでDB接続しテーブルより選択BOXを動的に作成し表示することはでき
ました。

次に、2つの選択BOXを用意し1つ目を選択することで、2つ目の選択BOXの
内容が動的に切り替わるようにしたく調べたところjavascriptで可能で
した。(ただし、valueは直書き)

上の二つの事を併せて、valueはテーブルより取得し、1つ目の選択BOXに
より2つ目の選択BOXが切り替わるようにしたいのですが方法がわかりま
せん。教えて頂けないでしょうか。

PHPを使用せずにjavascriptでDB接続し作成しようとしましたが、DBが
Postgresであり、参考ページがあまり無い事と、PHPで取得したデータも
あるので、どうにか利用できないかと思いました。一般的にはどのような
方法をとるのでしょうか。

宜しくお願いいたします。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2008-09-26 18:47
PHPとDBはひとまず忘れて、JavaScriptでセレクトを動的に切り替えるサンプルを探して試してみると良いでしょう。
緑茶
常連さん
会議室デビュー日: 2008/04/08
投稿数: 21
投稿日時: 2008-09-29 09:34
>mioさん

JavaScriptでの選択BOXの動的切り替えは質問文にも書いたように、以下ページを参考に
試して見ました。こういうことでよいのでしょうか。

ttp://f29.aaa.livedoor.jp/~morg/wiki/index.php?JavaScript%2Fselect%C1%AA%C2%F2%A5%DC%A5%C3%A5%AF%A5%B9%A4%F2%C6%B0%C5%AA%A4%CB%BA%EE%A4%EB
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2008-09-29 09:58
生憎、うちでは提示されたリンク先を見れなかったのですが、mioさんの言われた通りに「JavaScriptでセレクトを動的に切り替えるサンプル」を試してみて理解できたのなら、もう最初に要求されたプログラムは作れるはずですよ。

出来無いのだとしたら、実際につまった部分のコードを貼り付けて、「何が出来無いのか?」をはっきりとさせてみてください。
緑茶
常連さん
会議室デビュー日: 2008/04/08
投稿数: 21
投稿日時: 2008-09-29 15:32
コードを貼り付けさせていただきます。
長くなってしまいましたが、わからない部分を書きましたので教えて頂けないでしょうか。

■以下のようにjavascriptのみで動的な選択BOXを作成しました。

<form name="searchbox">
選択1<br />
<select name="area" onChange="changeform()">
<option value="0">(選択1)</option>
<option value=1>種類1</option>
<option value=2>種類2</option>
</select><br /><br />
選択2<br />
<select name="pref">
<option value="">(選択2)</option>
</select></form>

<script type="text/javascript" language="JavaScript">
<!--
var bunruiB = new Array();
bunruiB["種類1"]= new Array("種類1-A","種類1-B","種類1-C");
bunruiB["種類2"]= new Array("種類2-A","種類2-B","種類2-C");

function changeform() {
doc = document.searchbox.pref;
if (document.searchbox.area.value == 1) {
doc.length = bunruiB["種類1"].length + 1;
doc.options[0].text = "(選択2)";
for(var i=0; i < bunruiB["種類1"].length; i++){
doc.options[i+1].text = bunruiB["種類1"][i];
doc.options[i+1].value = i+1;
}
}else if(document.searchbox.area.value == 2) {
doc.length = bunruiB["種類2"].length + 1;
doc.options[0].text = "(選択2)";
for(var i=0; i < bunruiB["種類2"].length; i++){
doc.options[i+1].text = bunruiB["種類2"][i];
doc.options[i+1].value = i+1;
}
} else {
doc.length = 1;
doc.options[0].text = "(選択2)";
}
}
//-->
</script></body>

■次に1つ目の選択BOXのvalueをDBから取得するように変更しました(form部分)

<form name="searchbox">
選択1<br />
<?php
$dbconn = pg_connect ("dbname=testdb user=postgres");
$result = pg_query ($dbconn,"SELECT * FROM selectbox");

print "<select name=\\"area\\" id=\\"selectname\\" onChange=\\"changeform()\\">";
print "<option value=\\"0\\">(選択1)</option>";
for ($i = 0; $i < pg_numrows($result); $i++) {
$arr = pg_fetch_assoc ($result, $i);
$j = $i + 1;
print "<option value=\\"$j\\">". $arr["select_item"] . "</option>";
}
print"</select>";
?>
<br /><br />
選択2<br />
<select name="pref">
<option value="">(選択2)</option>
</select></form>

■この後、2つ目の選択BOXのvalueをDBから取得できるように変更したいのですが、
この部分がjavascriptのため具体的にどのように取得したらよいのかわかりません。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2008-09-29 15:53
>bunruiB["種類1"]= new Array("種類1-A","種類1-B","種類1-C");
>bunruiB["種類2"]= new Array("種類2-A","種類2-B","種類2-C");

ここが、置き換えられる選択2の内容になるということは分かりますか?
これらの行をうまく作り出せれば良いでしょう。

PHPに限らず、サーバ側のスクリプトで動的にコードを書き出す際のポイントは、「それがHTMLなのか、JavaScriptなのか、はたまたcssなのか」は関係がないということです。
動的に作り出したい箇所を変数にすればいい。
緑茶
常連さん
会議室デビュー日: 2008/04/08
投稿数: 21
投稿日時: 2008-09-29 17:56
>ここが、置き換えられる選択2の内容になるということは分かりますか?
>これらの行をうまく作り出せれば良いでしょう。

はい。この部分を動的につくれば良いだろうとは思いましたが、具体的
に思い付きませんでした。

「動的に作り出したい箇所を変数にすればいい。」という部分よりなん
となくイメージは掴めたように思えるのですが、うまく作るというこの
柔軟さが足りないのかわかりません。申し訳ないですがヒントを頂けな
いでしょうか。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2008-09-29 19:02
選択1は、ループで"<option>"等の固定の文字列(ここをHTMLタグと思わない)を出してますよね。
なので、選択2も、ループで同様に固定の文字列と一緒に出してやればいいわけですが。

スキルアップ/キャリアアップ(JOB@IT)