我目前面臨着兩難境地。我試圖構建一個菜單,它將顯示來自數據庫的一組數據。然後用戶將從該列表中選擇一個項目,並基於此,我需要進行數據庫調用以檢索與之相關的數據。這是我現有的代碼。使用PHP和SQL創建帶有子項的列表
function foobar() {
$first_option_sql = "SELECT * from {location} l ORDER BY name ASC";
$list_first_option = db_query($first_option_sql);
$output .= "<p><b>Please select the primary location that you would like to check.</b><p>"
$output .= "<br><b>Location: </b> <select id='list'><option>Available locations</option>";
while($first_option_available = db_fetch_object($list_first_option)){
$output .="<option locationid='$first_option_available->lid'>".$first_option_available->name."</option>";
}
$output .="</select><input type=submit value='Search'>";
$output .="<p><b>Children: </b><select id='child'><option selected='yes'>Available children</option><p>";
$children_available_sql = "SELECT complexquery WHERE lid='%d' ORDER BY l.name ASC";
$list_children = db_query($children_available_sql);
while($children_available = db_fetcj_object($list_children)){
$output .="<option>".$children_available->name."</option>";
}
return $output;
}
這裏的問題是,使用此代碼,我無法檢索所選擇的「第一選擇」,因此第二查詢從來沒有實際發生的價值;這不會填充第二個列表。
我正在考慮使用AJAX或Javascript,但我不太熟悉。因此,我想了解我可以如何執行此操作。
如果你只使用PHP,你不能真正做到這一點沒有提交表單,並重新顯示網頁,因爲PHP處理服務器端。 正如你所提到的,你可以更有效地使用Ajax,將所選的第一個選項傳遞給一個PHP頁面,該頁面然後將返回包含第二個列表值的數據庫請求的JSON數據。 – julio 2011-12-30 16:58:27
因爲我對AJAX不太熟悉,所以我想知道如何做到這一點。由於我基本上使用PHP生成網頁,因此我認爲將此功能引入另一個功能可能會更好一些。 – Hectron 2011-12-30 17:06:04
那麼,你將表單提交給第一個選項列表的onChange,並將第一個選擇列表的值作爲POST或GET參數傳遞。然後,在頁面的頭部,檢查該參數是否爲「isset」。如果是,那麼您知道該表單已提交,並且您使用該值觸發第二個選擇列表查找。 – julio 2011-12-30 20:34:15