Bootstrap-Select:从 Mysql 列中获取逗号值并自动显示在 bootstrap-select 中,如选中

Bootstrap-Select: get comma values from a Mysql column and display them automaticly inside bootstrap-select as checked

我正在使用 Bootstrap-Select,我希望这个多下拉列表中的某些选项会根据 Mysql 列中的逗号值进行检查。我发现了一个类似的问题,但没有找到解决问题的正确方法:

Bootstrap select - Get selected Value

下面有两个 table 描述了我的问题:

colors_tbl

colorID | color | 
--------+-------+
   01   | Blue  |
   02   | Black |
   03   | Green |
   04   | Red   |
   05   | White |
-----------------

下面是 table,它在列 Color 内存储带逗号的值。 color列是上面Colorstable的外键。

cars_tbl

carID | car  | colors
------+------+------------------
  01  | BMW  | Red,Blue,Green
  02  | GM   | Red,Black,White
  03  | FORD | Green,Gray,Black
--------------------------------

根据以上信息,我想从 colors 列(ID 03)上的 cars_tbl 获取颜色值,例如,并将这些值显示在 Bootstrap select 当 bootstrap 模式打开时检查。

下图显示了所描述的内容:

下面是 bootstrap 模态的 html 代码,里面显示 Bootstrap-Select 和一个 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(); of fetch_single[ 之后=77=] 上面的脚本:

$array = array($row['colors']);
$colors = implode(",", $array);

并替换这一行:

$output["colors"] = $row['colors'];

对此:

$output["colors"] = $color;

但是没有成功。

已更新

我找到了 Bootstrap-select 用来获取值并显示在下拉列表中的方法。方法是:

$('.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 格式放入并放入 selectpicker.('val', [])?

有些版主的方法我不太懂。我自己找到了一个解决方案来解决我的疑问以及可能有相同疑问的程序员的数百个疑问。请少一些官僚主义。

说得更具体点,根据一些看不懂的版主:

我使用 javascript string split() 方法解决了我的问题。 split() 方法用于将字符串拆分为子字符串数组,returns 一个新数组。

提示:如果使用空字符串 ("") 作为分隔符,字符串将在每个字符之间拆分。

注意:split()方法不会改变原始字符串。

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

现在好吗?免费拥抱 Whosebug 的所有领主!!!