2017-08-14 71 views
1

在我的代碼我使用PHPMySQL數據庫填充引導多selectpicker數據庫,但問題是它只選擇最後一個選項,而不是多個選項,我不知道我缺少什麼?這裏是我的我的代碼PHP引導多選擇選項

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>'; 
} 
+0

請告訴我的錯誤? –

+0

正如我所說,它只選擇最後一個選項,而不是所有選定的值 – Rtra

回答

3

要獲得所有選擇值在您需要使用name屬性與[]一個多選:

echo '<select class="selectpicker form-control" data-live-search="true" name="' . $comboname . '[]" multiple="multiple">'; 

之後,你可以重複使用foreach超過$_POST[$comboname]

更新

讓我們來看看更接近你的代碼在這裏:

while ($row=mysqli_fetch_array($result)) { 
    foreach ($array as $select_option){ 

     // You iterate over every value of array, so in the end 
     // `$print_selected` is defined depending on value of the 
     // last `$select_option` 

     if($row[$columnnames1] == $select_option) { 
      $print_selected = 'selected'; 
     } else { 
      $print_selected = ''; 
     } 

     // remove this. Why you echo `$select_option`? 
     echo $select_option; 
    } 
    echo '<option data-tokens="' . $row[$columnnames1] . '" value="' . $row[$columnnames1] . '"' .$print_selected. '>' . $row[$columnnames2] . '</option>'; 
} 

重寫爲:

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>'; 
} 
+0

我已經用'[]'設置了一個選擇框名稱這不是一個問題,它打印多個值我echo'$ selectedopt'但它只選擇一個選項而不是多個 – Rtra

+0

查看更新。 –

+0

完美地工作,謝謝你能告訴我我做錯了什麼? – Rtra