PHP引导多选择选项
在我的代码中,我使用的是PHP引导多选择选项,php,mysql,twitter-bootstrap,Php,Mysql,Twitter Bootstrap,在我的代码中,我使用的是PHP,它从MySQL数据库填充引导多selectpicker,但问题是它只选择最后一个选项,而不是多个选项,我不知道它缺少什么?这是我的密码 function MultiBindCombo($tablenames, $columnnames1, $columnnames2, $comboname, $selectedopt) { global $conn; $sql="SELECT ". $columnnames1. ", " . $columnnam
PHP
,它从MySQL
数据库填充引导多selectpicker
,但问题是它只选择最后一个选项,而不是多个选项,我不知道它缺少什么?这是我的密码
function MultiBindCombo($tablenames, $columnnames1, $columnnames2, $comboname, $selectedopt) {
global $conn;
$sql="SELECT ". $columnnames1. ", " . $columnnames2 . " FROM ". $tablenames;
$result = mysqli_query($conn, $sql);
if( ! $result ) {
echo mysql_error();
exit;
}
echo '<select class="selectpicker form-control" data-live-search="true" name="' . $comboname . '" multiple="multiple">';
$array = explode(',', $selectedopt);
while ($row=mysqli_fetch_array($result)) {
foreach ($array as $select_option){
if($row[$columnnames1] == $select_option) {
$print_selected = 'selected';
} else {
$print_selected = '';
}
echo $select_option;
}
echo '<option data-tokens="' . $row[$columnnames1] . '" value="' . $row[$columnnames1] . '"' .$print_selected. '>' . $row[$columnnames2] . '</option>';
}
echo '</select>';
}
函数MultiBindCombo($tablenames、$columnnames1、$columnnames2、$comboname、$selectedopt){
全球$conn;
$sql=“从“$tablenames”中选择“$columnnames1.”、“$columnnames2.”;
$result=mysqli\u查询($conn,$sql);
如果(!$result){
echo mysql_error();
出口
}
回声';
$array=explode(“,”,$selectedopt);
while($row=mysqli\u fetch\u数组($result)){
foreach($array as$select\u选项){
if($row[$columnnames1]=$select\u选项){
$print_selected='selected';
}否则{
$print_selected='';
}
echo$select_选项;
}
回显'.$row[$columnnames2].';
}
回声';
}
要在多重选择中获取所有选定值,您需要将
名称
属性与[]
一起使用:
echo '<select class="selectpicker form-control" data-live-search="true" name="' . $comboname . '[]" multiple="multiple">';
将其改写为:
while ($row=mysqli_fetch_array($result)) {
$print_selected = '';
foreach ($array as $select_option){
if($row[$columnnames1] == $select_option) {
$print_selected = 'selected';
// break `foreach` as you found the right item
break;
}
}
// if right item is not found - `$print_selected` is empty
echo '<option data-tokens="' . $row[$columnnames1] . '" value="' . $row[$columnnames1] . '"' .$print_selected. '>' . $row[$columnnames2] . '</option>';
}
while($row=mysqli\u fetch\u数组($result)){
$print_selected='';
foreach($array as$select\u选项){
if($row[$columnnames1]=$select\u选项){
$print_selected='selected';
//找到正确的项目时,将'foreach'打断
打破
}
}
//如果找不到正确的项目-“$print_selected”为空
回显'.$row[$columnnames2].';
}
错误是什么?正如我所说,它只选择最后一个选项,而不是所有选择的值。我已经用[]设置了一个选择框名称
这不是问题,它会打印我回显的多个值$selectedopt
,但它只选择了一个选项,而不是多个选项。非常感谢。你能告诉我我做错了什么吗?你没有打破循环。因此,$print\u selected
值始终是基于$array
的最后一个元素定义的。噢,我的错误,谢谢您的澄清和帮助
while ($row=mysqli_fetch_array($result)) {
$print_selected = '';
foreach ($array as $select_option){
if($row[$columnnames1] == $select_option) {
$print_selected = 'selected';
// break `foreach` as you found the right item
break;
}
}
// if right item is not found - `$print_selected` is empty
echo '<option data-tokens="' . $row[$columnnames1] . '" value="' . $row[$columnnames1] . '"' .$print_selected. '>' . $row[$columnnames2] . '</option>';
}