你不能因爲用戶是選擇第一個下拉的時間與普通的PHP爲此,PHP已經完成了對服務器端的工作。你將需要JavaScript,我總是推薦jQuery。
對於MySQL查詢,我使用的是我爲自己創建的PHP PDO類,我習慣於(不必擔心這一點),但實質上,只需獲取PHP查詢如何知道最好,並確保您不會對SQL注入開放。你將需要谷歌和閱讀AJAX和PHP使用jQuery。這是快速,骯髒和未經測試,所以如果你有問題,請在評論中打我。這裏所說:
<label><span>Choose a Car:</span>
<select name="car" id="car" class="validate[required] longtext" onchange="getCarModels();">
<option value="">-------Make a Selection------</option>
<?php
try{
$carCount = DB::getDB("mysql", 1, array("carID"))->query("SELECT COUNT(DISTINCT(%s%)) FROM cars")->fetchColumn();
if ($carCount > 0){
$car_sql="SELECT DISTINCT %s% FROM cars";
foreach (DB::getDB("mysql", 1, array("carID", "carName"))->query($car_sql) as $row){
echo '<option value="'.$row[carID].'">'.$row[carName].'</option>';
}
}
}catch(PDOException $e){
print "SQL Error: " . $e->getMessage() . "<br/>";
exit();
}
?>
</select>
</label>
<label id="carModelsBox" style="display:none;">
<span>Select Model:</span>
<select name="carmodel" id="carmodel" class="validate[required] longtext">
</select>
</label>
和JavaScript
function getCarModels(){
var carID = $('#car option:selected').val();
if (carID == "") {
$('#carModelsBox').slideUp("fast");
}
$.getJSON("ajax.carmodels.php", {carID:carID}, function(data){
if (data.success){
$('#carmodel').html(data.models);
}else{
$('#carModelsBox').append("<p>There are no models</p>");
}
$('#car').blur();
$('#carModelsBox').slideDown("fast"); $('#carmodel').focus();
});
}
此JavaScript文件將通過AJAX調用PHP文件。這個文件是ajax.carmodels.php,它將通過GET接收carID。下面的代碼片段:
if ($carID!=''){
try {
$carModelCount = DB::getDB("mysql", 1, array("carmodel.id"))->query("SELECT COUNT(DISTINCT(%s%)) FROM cars, carmodel WHERE carmodel.id = cars.id")->fetchColumn();
if ($carModelCount > 0){
$model_sql="SELECT DISTINCT %s% FROM cars, carmodel WHERE carmodel.id = cars.id";
foreach (DB::getDB("mysql", 1, array("model", "modelname"))->query($model_sql) as $row){
$models .= '<option value="'.$row[model].'">'.$row[modelname].'</option>';
}
$return['models'] =$models;
$return['success'] =true;
}
}catch(PDOException $e){
print "SQL Error: " . $e->getMessage() . "<br/>";
exit();
}
}else{
$return['success'] =false;
}
echo json_encode($return);
而最重要的是,別忘了提供jquery本身。將其放入您的初始PHP 頁面。
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
我不確定這會對Patrick有幫助。他顯然需要自動填充的鏈接下拉框,但他的問題在他的意義上是錯誤的。 – Cogicero 2011-04-13 17:00:05
@Cogicero:我同意你的觀點,如果OP希望結果集由選定的第一個下拉值或OP是否需要所有模型驅動。問題是小小的問題 – Chandu 2011-04-13 17:02:26
沒錯,Op說明了這個問題真的令人困惑。我們中的任何一個都可能是正確的,但是由於OP的這一部分(我的重點),我假定它是「第二次drodown中的值取決於使用SQL QUERY的第一個下拉列表的值」。但我猜測OP不知道SQL無法實現預期的目標。 – Cogicero 2011-04-14 16:49:35