我是初学者,正在使用Dreamweaver创建网页。我需要一个SQL查询,允许第二个下拉框根据第一个dropbox的结果下拉值。
我有一个MySQL表作为Cars()和另一个表车模型,第三个是汽车年。
这是我到目前为止所做的:
有人可以帮帮我吗?
答案 0 :(得分:0)
试试这个:
SELECT DISTINCT carmodel FROM carmodel WHERE carmodelid IN (SELECT carid FROM cars)
答案 1 :(得分:0)
使用普通PHP无法做到这一点,因为当用户选择第一个下拉列表时,PHP已在服务器端完成其工作。你需要javascript,我总是推荐jQuery。
对于MySQL查询,我使用的是我为自己创建的PHP PDO类,我已经习惯了(不要理会这一点)但实质上,只是获取PHP查询的最佳方式,并确保你是不打开SQL注入。你需要google并使用jQuery阅读AJAX和PHP。这是快速,肮脏和未经测试的,所以如果你有疑问,请在评论中打我。这是:
<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>