Bootstrap -Выбрать: получить значения запятых из столбца Mysql и автоматически отобразить их внутри bootstrap - выбрать как отмечено - PullRequest
0 голосов
/ 12 апреля 2020

Я работаю с 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

Ниже приведен код 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">&times;</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', [])?

1 Ответ

0 голосов
/ 15 апреля 2020

Я не понимаю метод некоторых модераторов. Я сам нашел решение, чтобы разрешить свои сомнения и, возможно, сотни сомнений программистов, которые могут иметь такие же сомнения. Меньше бюрократии, пожалуйста.

Чтобы быть более точным c, по мнению некоторых непонятных модераторов:

Я решаю свой вопрос, используя метод javascript string split (). Метод split () используется для разделения строки на массив подстрок и возвращает новый массив.

Совет. Если в качестве разделителя используется пустая строка (""), строка разделяется между каждый символ.

Примечание. Метод split () не изменяет исходную строку.

$('.selectpicker').selectpicker('val', data.color.split(','));

Это хорошо сейчас? Бесплатные объятия всем лордам stackoverflow !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...