2014-10-08 66 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