これについて多くのスレッドを見ましたが、私が行っていることに関連するものがあるかどうかはわかりません。私はいくつかの「解決策」を試しましたが、まったく役に立ちませんでした。これが私のコードの一部です:
<td><select name="County" onChange="getCity('findcity.php?county='+this.value)">
...。
<td><fieldset id="f2">
<select name="Town">
<option value="Any">Any Town</option>
</select>
</fieldset>
</td></tr>
...。
</td></tr>
<tr>
<td><fieldset id="f4">
<input type="submit" name="Search!">
</fieldset>
</form>
</td>
</tr>
Town Selectは、最初はプレースホルダーとしてのみ存在します。変更された最初のドロップダウンで、2番目のドロップダウンがgetCity()関数を介して入力されます。選択した値をfindcity.phpに渡し、mysqlを使用してfindcity.phpを介して値を設定し、TOWNselectを複製に置き換えます。
MySQLで生成されたもの:(動作します)
<select name="Town">
<option value="Any">Any Town</option>
<? while($row=mysql_fetch_array($result)) { ?>
<option value="<?=$row['dir_town']?>"><?=$row['dir_town']?></option>
<? } ?>
</select>
そして、これはすべての作業を行う関数です。
<script>
function getXMLHTTP() { //function to return the xml http object
var xmlhttp=false;
try{
xmlhttp=new XMLHttpRequest();
}
catch(e) {
try{
xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e1){
xmlhttp=false;
}
}
}
return xmlhttp;
}
function getCity(strURL) {
var req = getXMLHTTP();
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
document.getElementById('f2').innerHTML=req.responseText;
} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", strURL, true);
req.send(null);
}
}
</script>
最終結果はGETでこれです:
results.php?County=Kent&Sector=Any&Search%21=Submit
何もせずに送信すると、次のように機能します。
results.php?County=Bedfordshire&Town=Any&Sector=Any&Search%21=Submit
入力ボックスに取って代わっていないので想像します。DIV内にあるために発生したと思われる問題を解消するために、フィールドセットを使用しました。
ため息、私はこれに簡単な解決策があることを知っています、私はただ何を思い出せません。
また、リクエストから「&Search ..」の部分を削除する方法を教えてくれた場合のボーナスポイント:S検索ボタンがなぜそこに自分自身を入れているのかわかりません。フィールドセットの?よろしくお願いします。
編集:誰かが2番目のドロップダウンにデータを入力してこれを修正する別の方法を与えることができれば、私はかなり満足します。
$county=$_GET['county'];
//$county =mysql_real_escape_string($county);
include('includes/dbc.php');
$query="SELECT DISTINCT `dir_town` FROM `directories` WHERE `dir_county` = '$county' ORDER BY `dir_town` ASC";
$result=mysql_query($query);?>
<select name="Town">
<option value="Any">Any</option>
<? while($row=mysql_fetch_array($result)) { ?>
<option value="<?=$row['dir_town']?>"><?=$row['dir_town']?></option>
<? } ?>
</select>
私のdbc.phpはすべての接続を行います。