, PHP는 서버 측에서 작업을 완료했습니다. 자바 스크립트가 필요하며 항상 jQuery를 사용하는 것이 좋습니다.
MySQL 쿼리의 경우 PHP PDO 클래스를 사용하고 있습니다. 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>
그리고 AJAX를 통해 PHP 파일을 호출 할 자바 스크립트 파일에 자바 스크립트
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();
});
}
이 있습니다. 이 파일은 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>
패트릭이 도움이 될지 잘 모르겠습니다. 그는 자동으로 채워진 연결된 드롭 다운 상자가 분명히 필요하지만 그의 질문에 대한 그의 질문은 잘못되었습니다. – Cogicero
@Cogicero : OP가 첫 번째 드롭 다운 값을 선택했거나 OP가 모든 모델을 원하는지 여부에 따라 OP가 결과 세트를 원할 경우 동의합니다. 질문은 작은 표기였습니다. – Chandu
사실, Op가 질문을하는 방식이 정말 혼란 스럽습니다. 우리 둘 중 어느 누구도 옳을 지 모르지만이 부분의 OP (emphasis mine) 때문에 "SQL 쿼리를 사용하여 첫 번째 드롭 다운의 값에 따라 두 번째 드롭 다운 값이 달라집니다"라고 생각했습니다. 그러나 나는 OP가 SQL이 의도 된 목적을 달성 할 수 없다는 것을 정말로 알지 못한다고 생각했다. – Cogicero