首页 > 解决方案 > Bootstrap-Select:从 Mysql 列中获取逗号值,并在 bootstrap-select 中自动显示为选中状态

问题描述

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

引导选择 - 获取选定的值

以下是描述我的问题的两个表格:

颜色表

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

下面是在 column 中存储带有逗号的值的表格Color。该color列是上Colors表的外键。

car_tbl

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

例如,基于上述信息,我想从列(ID 03)获取颜色值cars_tblcolors并在引导模式打开时将这些值显示在 Bootstrap 选择中。

下面是一张图片,显示了所描述的内容:

引导选择

下面是在内部显示 Bootstrap-Select 的 bootstrap modal 的 html 代码和一个打开 modal 并使用 ajax 结果显示数据的 jQuery 函数:

<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-select 用来获取值并显示在下拉列表中的方法。方法是:

$('.selectpicker').selectpicker('val', ['value 1','value 2']);

在这种情况下,我将这个 selectpicker 方法放在 ajax 成功中,我不知道如何从我的 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");
            }
        })

我如何从 JSON 格式中输入颜色值并放入 indide selectpicker.('val', [])?

标签: phpjsonbootstrap-selectbootstrap-selectpicker

解决方案


我不明白一些版主的方法。我自己找到了一个解决方案来解决我的疑问,可能还有数百个可能有同样疑问的程序员的疑问。请少一些官僚主义。

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

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

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

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

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

现在这样好吗?所有stackoverflow领主的免费拥抱!!!


推荐阅读