※ ChatGPTを利用し、要約された質問です(原文:PHP+Ajaxでプルダウンの連動)
PHP+Ajaxでプルダウンの連動
このQ&Aのポイント
PHP+Ajaxを使用して、プルダウンの連動を行う方法について質問があります。
現在、PHP+MySQLでホームページを作成しており、AとBのプルダウンを連動させたいです。
しかし、Bのプルダウンにデータが反映されない状態です。修正箇所とその方法を教えていただきたいです。
お世話になっております。久しぶりですが、わからないところが出てきたので、質問させてくださいませ。
現在、PHP+MySQLでホームページを作っています。
A(大カテゴリ)、B(小カテゴリ)のそれぞれのプルダウンを持っていて、
MySQL上では、BはどのAに所属しているかが格納されています。
その上で、
PHPソース
<script type="text/javascript" src="ajax.js"></script>
Aの部分
<select name="category" id="category" onChange="changePack(this)">
<option value="">--</option>
<option value="1">A-1</option>
<option value="2">A-2</option>
<option value="3">A-3</option>
</select>
Bの部分
<select name="pack" id="pack">
<option value="">--</option>
</select>
Ajax部分のソース
// 検索結果画面初期表示用
function setList() {
var Category = "0";
var Pack = "0";
setPackOption(Category);
document.rsv_input.category.selectedIndex = 0;
document.rsv_input.pack.selectedIndex = 0;
}
// カテゴリ選択時
function changePack(Category)
{
var Category;
getResult(Category.value);
}
function getResult(Category)
{
//XMLHttpRequestオブジェクト生成
var xmlhttp = createHttpRequest();
if (xmlhttp == null) {
return null;
}
var data = "";
data += "category=" + Category;
sendRequest(xmlhttp, "POST", "result.php", false, data, callBack);
}
function callBack(xmlhttp)
{
var result = xmlhttp.responseText;
var resArray = result.split(",");
for (i=0; i<resArray.length; i++) {
var packArray = resArray[i].split("/");
document.rsv_input.pack.options[i] = new Option(packArray[1], packArray[0]);
}
}
relust.phpのソース
$category = ( $_POST["category"] != "0" )? $_POST["category"] : '';
select文で「$category」を持つ、レコードから「小カテゴリ」のid、名称
を取得
$id = $Cols['id'];
$name = $Cols['name'];
$data .= ',' . $id . '/' . $name;
echo($data);
としておりますが、小カテゴリのプルダウンに$dataの中身が反映されません。(result.phpの$_POSTを$_GETに変更して単体で動かした場合は、$dataが読み取れる状態になります。)
http://www.okushin.co.jp/information/Ajax_report/06_sample02.php
を参考にさせていただいていますが、プルダウンの総数が違う。や、最終結果をテキストデータとしてhtml中に書き出すなど若干の相違点でつまずいています。
当方、PHP(0.5年)、JavaScript(0.5年)位の経験しか持ち合わせていないので、余計にわかってないだけかも知れません。
お手数をおかけいたしますが、修正箇所の指摘やその方法などを教えていただけませんでしょうか。よろしくお願いいたします。
お礼
所々で、alertを表示させるようにして試してみました。 結果はNGだったんですが、試論の元はできたように思います。 次回もまた、同様のことで考えるタイミングは発生するだろうと思いますが、今回の経験を糧にしてクリアできるようになってみます。 どうも、ありがとうございました。