Я выбрал несколько марок автомобилей в цикле while, а затем для каждой марки я делаю меню выбора для имен автомобилей в другом цикле while, используя «идентификатор бренда» в качестве внешнего ключа. И затем я хочу показывать названия автомобилей в поле каждый раз, когда кто-то меняет раскрывающиеся опции выбора. Вот мой код ниже:
$query = "SELECT * FROM brands";
$result = $db->query($query);
// Outer while loop
while($row = $result->fetch(PDO::FETCH_OBJ)){
$brand_id = $row->id;
?>
<div id="result"></div> <!-- The Ajax result will be shown here -->
<div><?php echo $row->brand_name ?></div>
<?php
$query2 = "SELECT * FROM cars WHERE brand_id = ?";
$result2 = $db->prepare($query);
$result2->execute(array($brand_id));
<select name="car" id="car">
// Inner while loop
while($row2 = $result2->fetch(PDO::FETCH_OBJ)){
?>
<option value="<?php echo $row2->id ?>"><?php echo $row2->car_name ?></option>
<?php
} // Closing Inner while loop
?>
</select>
<!-- Ajax -->
<script>
$(document).ready(function(){
$('#car').change(function(e){
e.preventDefault();
var car = $(this).val();
$.ajax({
url: "ajax.php",
type: "post",
data: {car: car},
success: function(data){
$('#result').html(data);
}
});
});
});
</script>
<?php
} // Closing outer while loop
В ajax.php я написал следующий код, чтобы повторить имя машины
$carName = $_POST['car'];
echo $carName;
Но проблема в том, что он выполняется только дляпервый вариант выбран внутри первого внутреннего цикла первого внешнего цикла. Я имею в виду, что код ajax запускается только для первой итерации обоих циклов.
Я также попытался сделать меню выбора и результат div уникальным, добавив «идентификатор бренда» следующим образом:
<div id="result<?php echo $brand_id ?>"></div>
и
<select name="car" id="car<?php echo $brand_id ?>">
<option value="<?php echo $row2->id ?>"><?php echo $row2->car_name ?></option>
</select>
, а также ajax, как указано ниже:
$('#car<?php echo $brand_id ?>').change(function(e){
e.preventDefault();
var car = $(this).val();
$.ajax({
url: "ajax.php",
type: "post",
data: {car: car},
success: function(data){
$('#result<?php echo $brand_id ?>').html(data);
}
});
Но это не сработало. Пожалуйста, предложите ваши лучшие возможные решения. Спасибо.