我不是(我確定你會注意到下面)程序員或編碼員。我編寫網絡文檔手冊。動態填充兩個下拉菜單
也就是說,我對HTML,php,css等有些熟悉。但接下來,我完全和完全難倒了:
我正在嘗試爲我的朋友建立一個網站,該網站處於綁定狀態,儘管一切都很順利,但我必須將最終用戶重定向到一個專爲他們的社區而建的網頁。
我需要的是一種讓最終用戶點擊下拉菜單的方式,該菜單列出(通過MySQL查詢)所有可用記錄的狀態,當它們在第一個菜單中選擇一個選項時,第二個菜單通過(再次通過MySQL)填充該州內的社區。
雖然我在互聯網搜尋了可能有用的東西,但我發現我的編碼邏輯不夠完善。但是,我確實發現了一個顯示我正在嘗試執行的基本版本的網站(see here),但似乎無法使其與MySQL一起工作。這是我到目前爲止:
腳本 -
<script>
function swapOptions(ArrayName) {
var ExSelect = document.theForm.sites;
var theArray = eval(ArrayName);
setOptionText(ExSelect, theArray);
}
function setOptionText(theSelect, theArray) {
for (loop = 0; loop < theSelect.options.length; loop++) {
theSelect.options[loop].text = theArray[loop];
}
}
</script>
和HTML -
<form name="theForm">
<select name="chooseCat" onchange="swapOptions(this.options[selectedIndex].text);">
<option value="">Please select your state ...</option>'
<?php
$query = mysql_query("SELECT DISTINCT state FROM sites ORDER BY state")
or die(mysql_error());
while ($result = mysql_fetch_assoc($query)) {
$stateChoice = $result['state'];
echo '<option value="';
echo "$stateChoice";
echo '">';
echo "$stateChoice";
echo '</option>';
echo '<br />';
}
?>
</select>
<select name="sites" style="min-width: 100px;" onchange="location.href='reports.php?page=' + this.options[this.selectedIndex].value;">
<?php
$query = mysql_query("SELECT * FROM sites")
or die(mysql_error());
while ($result = mysql_fetch_assoc($query)) {
echo '<option value="';
echo '">';
echo $result['longname'];
echo '</option>';
echo '<br />';
}
?>
</select>
</form>
這將返回兩個下拉菜單。第一個與我的可用狀態查詢結果,在下拉列表中按字母順序列出。第二種是列出所有網站的長名稱,但是對於表格中的所有網站而言,不僅僅是某個州(剛剛選擇的州)內的網站。
最後,下拉列表1應填入所有可用狀態。一旦用戶選擇他們的狀態,這應該觸發下拉2的人口,並且所有社區都處於他們選擇的狀態。一旦社會的選擇,點擊下拉菜單中的2,它應該重定向用戶的瀏覽器,例如,http://www.webpage.com/reports.php?page=communityNameGoesHere ...
非常感謝您的任何意見,你可能有在這裏:)
爲什麼在2次足夠的時候使用11次'echo'?你可以使用[concatenation](http://php.net/manual/en/language.operators.string.php)。 – Jocelyn
看起來您必須在選擇下拉列表1中的選項時進行ajax調用,或者單獨爲所有狀態預先加載所有可能的社區列表,並在選擇第一個下拉列表中的選項時顯示/隱藏它們。或者,每次選擇一個選項時重新加載整個頁面,但你可能不想那麼做:) – Mahn
嗨Jocelyn,非常感謝評論。至於重複使用回聲,你是絕對正確的。我只在這裏擁有它,因爲這是一項正在進行的工作,一旦完成,我一定會清理並收緊它。再次感謝:) – spyrule