php - 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_tbl
,colors
并在引导模式打开时将这些值显示在 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">×</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', [])?
解决方案
我不明白一些版主的方法。我自己找到了一个解决方案来解决我的疑问,可能还有数百个可能有同样疑问的程序员的疑问。请少一些官僚主义。
再具体点,根据一些看不懂的版主说:
我使用 javascript 字符串 split() 方法解决了我的问题。split() 方法用于将字符串拆分为子字符串数组,并返回一个新数组。
提示:如果使用空字符串 ("") 作为分隔符,则字符串将在每个字符之间进行分割。
注意: split() 方法不会更改原始字符串。
$('.selectpicker').selectpicker('val', data.color.split(','));
现在这样好吗?所有stackoverflow领主的免费拥抱!!!
推荐阅读
- puppet - 在模块中,使用定义的资源在 puppet3 中有效,但在 puppet5 中失败
- c# - 无法更新 Wcf 引用
- javascript - 将日期从星期几转换为日期名称
- r - 如何使用 sapply 保留所有变量?
- css - Electron 中 SVG 组的变换原点被忽略
- javascript - 如何迭代多个页面的 API?
- angular-material-5 - 禁用控件状态时,角度材质输入将占位符移动到顶部
- python - 在 TensorFlow Estimator API 中设置分段学习率
- ember.js - 如何初始化 Ember 模型 ID?
- javascript - 如何在 React Native 中将 flexbox 用于文本组件?水平环绕,垂直增量