2014-10-08 65 views
1

我從我的數據庫中提取數據以檢索爲多選下拉列表選擇的多個選項。我是他們試圖重置這些值作爲選擇,但其中唯一選定的一個。PHP設置多選下拉列表

我從數據庫陣列:

[data] => SimpleXMLElement Object 
     (
      [term] => LTA 
      [prevention] => SimpleXMLElement Object 
       (
        [reason] => Array 
         (
          [0] => SimpleXMLElement Object 
           (
            [process] => Recruitment 
            [processID] => 4 
           ) 

          [1] => SimpleXMLElement Object 
           (
            [process] => People Management 
            [processID] => 3 
           ) 

          [2] => SimpleXMLElement Object 
           (
            [process] => Not Applicable 
            [processID] => 2 
           ) 

         ) 
       ) 

     ) 

下面是HTML/PHP我使用生成的選項,並嘗試重新選擇陣列中的選項:

<select name="prevention" id="prevention" class="form-control dd ff" placeholder="Select 1 or more options" multiple="multiple"> 
<?php foreach($processes->data as $process){ 
    foreach($recordDetails->data->prevention->reason as $is){ 
    if((int)$is->processID == (int)$process->processID){ 
     $isSel = 'selected';  
    } 
    else 
    { 
     $isSel = '';  
    } 
    } 
    ?> 
<option value="<?php echo $process->processID . '" '. $isSel . '>'; ?> <?php echo $process->process; ?></option> 
<?php } ?> 
</select> 
+0

「<?PHP的echo $流程 - >的ProcessID。「」「。 $ isSel。 '>'; ?>' – bruchowski 2014-10-08 16:31:21

+0

我將它改爲''作爲一個測試,它仍然只是選擇3個選項中的一個 – SBB 2014-10-08 16:34:13

回答

1

你在內部循環中覆蓋$isSel,所以你只有每個人都能得到最後一次迭代的值。

而是初始化內環以外的變量:你有一些語法的怪事在這一行`<期權價值=發生

<select name="prevention" id="prevention" class="form-control dd ff" placeholder="Select 1 or more options" multiple="multiple"> 
<?php 
    foreach($processes->data as $process): 
     $isSel = ''; 
     foreach($recordDetails->data->prevention->reason as $is): 
      if((int)$is->processID == (int)$process->processID){ 
       $isSel = 'selected'; 
       break; 
      } 
     endforeach; 
     ?> 
     <option value="<?php echo $process->processID . '" '. $isSel . '>'; ?> <?php echo $process->process; ?></option> 
    <?php 
    endforeach; ?> 
</select> 
+0

這現在只給了我一個選項,其中5個可能的選擇列表中沒有選中 – SBB 2014-10-08 16:43:31

+0

將它改爲Break 1而不是2,它工作得很好:) – SBB 2014-10-08 16:44:23

+0

@SBB糟糕,編輯。很高興我能幫上忙 – Steve 2014-10-08 16:47:46