Я работаю с Bootstrap -Выберите , и я хотел бы, чтобы некоторые параметры в этом множественном раскрывающемся списке были бы проверены на основе значений запятой из столбца Mysql. Я нашел один похожий вопрос, но не нашел правильного способа решения моего вопроса:
Bootstrap select - Получить выбранное значение
Ниже приведены две таблицы которые описывают мой вопрос:
colors_tbl
colorID | color |
--------+-------+
01 | Blue |
02 | Black |
03 | Green |
04 | Red |
05 | White |
-----------------
И ниже таблица, в которой хранятся значения с запятой внутри столбца Color
. Столбец color
является внешним ключом приведенной выше таблицы Colors
.
cars_tbl
carID | car | colors
------+------+------------------
01 | BMW | Red,Blue,Green
02 | GM | Red,Black,White
03 | FORD | Green,Gray,Black
--------------------------------
На основании приведенной выше информации я хотел бы получить цвет значения из cars_tbl
в столбце colors
(ID 03), например, и отображать эти значения внутри Bootstrap выберите как проверено, когда открыт модальный bootstrap.
Ниже приведено изображение, которое показывает, что было описано:
![Bootstrap-Select](https://i.stack.imgur.com/s65Ux.png)
Ниже приведен код html модального bootstrap этот дисплей Bootstrap -Выберите внутри и jQuery функция, которая открывает модальные и отображает данные, используя ajax результаты:
<div class="modal fade" id="userModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Edit Car</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<form method="post" id="user_form" enctype="multipart/form-data">
<div class="row">
<div class="col">
<label>Car</label>
<input type="text" name="car" id="car" class="form-control"/>
</div>
<div class="col">
<div class="form-group">
<label>Colors</label>
<?php
include 'pdo_connection.php';
$stmt = $connection->prepare('SELECT * FROM colors_tbl');
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<select class="selectpicker form-control" name="colors[]" id="colors" data-actions-box="true" multiple>
<?php foreach($results as $row): ?>
<option value="<?= $row['colorID']; ?>"><?= $row['color']; ?></option>
<?php endforeach ?>
</select>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<input type="hidden" name="user_id" id="user_id" />
<input type="hidden" name="operation" id="operation" />
<input type="submit" name="action" id="action" class="btn btn-warning" value="" />
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
</div>
</form>
</div>
</div>
</div>
<script>
$(document).on('click', '.update', function(){
var user_id = $(this).attr("id");
$.ajax({
url:"fetch_single.php",
method:"POST",
data:{user_id:user_id},
dataType:"json",
success:function(data)
{
$('#userModal').modal('show');
$('#car').val(data.car);
$('#colors').val(data.colors);
$('#user_id').val(user_id);
$('#action').val("Edit Car");
$('#operation').val("Edit");
}
})
});
</script>
и скрипт php ( fetch_single. php ), которые выбирают данные, когда открыт модальный режим:
<?php
include 'pdo_connection.php';
if(isset($_POST["user_id"]))
{
$output = array();
$statement = $connection->prepare(
"SELECT * FROM cars = '".$_POST["user_id"]."'
LIMIT 1"
);
$statement->execute();
$result = $statement->fetchAll();
foreach($result as $row)
{
$output["car"] = $row["car"];
$output["colors"] = $row['colors'];
}
echo json_encode($output);
}
?>
Чтобы попытаться разрешить это сомнение, я попытался поместить этот код ниже после переменной $ output = array (); из fetch_single Сценарий выше:
$array = array($row['colors']);
$colors = implode(",", $array);
И заменить эту строку:
$output["colors"] = $row['colors'];
на эту:
$output["colors"] = $color;
Но безуспешно ,
ОБНОВЛЕНО
Я нашел метод, который Bootstrap -выберите, чтобы получить значения и отобразить их в раскрывающемся списке. Метод:
$('.selectpicker').selectpicker('val', ['value 1','value 2']);
В этом случае я помещаю этот метод selectpicker в ajax success и я не знаю, как я могу получить значения цветов из моего php сценария, который отправляет результаты в JSON отформатировать в Ajax. Если я заменим значения 'value 1' и 'value 2' на 'data.colors' в квадратных скобках выше, я не получу ничего, когда открывается модальное окно:
$.ajax({
url:"fetch_single.php",
method:"POST",
data:{user_id:user_id},
dataType:"json",
success:function(data)
{
$('#userModal').modal('show');
$('#car').val(data.car);
$('#colors').selectpicker('val', [data.colors]);
$('#user_id').val(user_id);
$('#action').val("Edit Car");
$('#operation').val("Edit");
}
})
Как я могу поставить colors значения из JSON форматируют и помещают в палитру выбора. ('val', [])?