これは簡単な例です。これはjavascriptソリューションです。私はこれを使用しており、それは完全に正常に動作します。このスクリプトは、国を選択すると、2番目のドロップダウンで対応する都市を入力する場合に機能します。あなたはいくつかのアイデアを取って、それぞれ3つのドロップダウンに対処できるあなたの場合にこれを使用することができます。
これは、国のドロップダウンです:
<?php
$countrylist=mysql_query("SELECT * FROM country ORDER BY name ASC");
echo "<select name='country' id='country' onchange=\"reload(this.form)\" title='Country e:g; United Kingdom,Pakistan'><option value='0'>Select Country</option>";
while($clist=mysql_fetch_array($countrylist))
{
echo "<option value='$clist[Name]'>$clist[Name]</option>"."<br/>";
}
echo "</select>";
?>
これは、地域のドロップダウンです:
<select name="region" id="region" ></select>
は今crlist.jsという名前の別々のファイルを作成し、このようなコードの上にあるページに含めます:
<script type="text/javascript" src="crlist.js"> </script>
crlist.jsのためのコード:
var request = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try {
request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
request = false;
}
}
@end @*/
function fillSelect(country,path) {
var url = path+"crlist.php?country=" + country;
request.open("GET", url, true);
request.onreadystatechange = go;
request.send(null);
}
function go() {
if (request.readyState == 4) {
//if (request.status == 200) {
var response = request.responseText;
var list=document.getElementById("region");
for (i = list.length - 1; i>=0; i--) {
list.remove(i);
}
var records=response.split('|');
for (i=1; i<records.length; i++) {
//alert("rcord="+records[i]);
var record=records[i].split('*');
var region=record[0];
//alert("region="+region);
var regionid=record[1];
//alert("regionid="+regionid);
var x=document.createElement('option');
//var y=document.createTextNode(region);
x.text=region;
//x.value=region;
//alert(x.text);
//x.appendChild(y);
//list.appendChild(x);
list.options.add(x);
}
//}
}
}
function initCs(path) {
if (!request && typeof XMLHttpRequest != 'undefined') {
request = new XMLHttpRequest();
}
var country=document.getElementById('country');
country.onchange=function() {
if(this.value!="Select") {
var list=document.getElementById("region");
for (i = list.length - 1; i>=0; i--) {
list.remove(i);
}
//while (list.childNodes[0]) {
//list.removeChild(list.childNodes[0]);
//}
}
fillSelect(this.value,path);
//alert(this.value);
}
//fillSelect(country.value);
}
ここで、crlist.phpという名前の別のファイルを作成します。
crlistのコード。PHP:
<?php
require_once 'yourconfigfile.php';
$cname = $_GET['country'];
$query="select ID,Name from city where CountryCode=(select code from country where name='$cname') Order By Name ASC";
$res = mysql_query($query) or die(mysql_error());
while($region = mysql_fetch_array($res)){
echo "<option value='".$region['Name']."'>".$region['Name']."</option>";
}
?>
今のドロップダウンを持つページに次のスクリプトを追加します。
<script type="text/javascript" src="crlist.js"> </script>
<script>
$(document).ready(function() {
initCs("");
});
</script>
これは私自身のスクリプトであり、そして私はあなたが国や地域のテーブルを作成したと仮定してきました。しかし、db構造に従ってクエリや上記のコードを微調整する必要があります。あなたの場合、会社、支店、従業員用のテーブルを作成する必要があります。
これが役に立ちます。
私は正確に何を求めているのか分かりませんでしたか?どのようにクエリを書くか?どのようにドロップダウンを出力するのですか? – YuS
私はあなたがJavascriptを使ってそれをしなければならないと思います。 PHP/MySQLのみを使用してドロップダウンをフィルタリングすることはできません。しかし、ユリが言ったように、この質問についてはより具体的なものにしてください。 –
申し訳ありませんが、みんなええ、私は欲しいものを確かめることを忘れていました。ええ、私はこれを達成する方法を知りたいだけです。例は素晴らしいでしょう – slowie