2014-11-23 111 views
0

我使用下面的代碼來檢查每個循環的checbox。但複選框不檢查基於數組的值。我用爆炸來創建$ newsource.Actualy我有 sourceIds = 100252 & sourceIds = 100111複選框內部自舉選擇框內使用php

$newsource = Array ([0] => sourceIds=100252 [1] => sourceIds=100111); 

     <select id="source" class="form-control source" multiple="multiple"> 
      <?php $loop=0; foreach($sources->sources as $row) { 
     echo $loop; 
     if($newsource[$loop]==$row->id) { 

echo '<option checked="'.checked.'" value="'.$row->id.'">'.$row->name.'</option>'; 

     } 
     else { 
      echo '<option value="'.$row->id.'">'.$row->name.'</option>'; 
      echo "a".$newSource[$loop]; 
     } 
     $loop = $loop +1;} ?></select> 

回答

0

嘗試:

if($newSource[$loop]==$row->id) { 
    echo '<option value="'.$row->id.'" selected>'.$row->name.'</option>'; 
} 
else { 
    echo '<option value="'.$row->id.'">'.$row->name.'</option>'; 
    echo "a".$newSource[$loop]; 
} 
+0

你有沒有注意到$ newSource的=陣列([0] => sourceIds = 100252 [1] => sourceIds = 100111);。我認爲這是跌破發行 – aniltc 2014-11-23 13:30:26

+0

辦理登機,我該怎麼解決了 – aniltc 2014-11-23 14:33:47

0

你使用的檢查,而不是選擇,並且順便用它作爲一個常量作爲作爲字符串的一部分

... 
echo '<option selected="selected" value="'.$row->id.'">'.$row->name.'</option>'; 
... 

你的代碼有其他問題,但:數組定義看起來不正確,你訪問它作爲一個普通的數組,但定義給我的印象是,它是一個關聯數組。 而且你也指$newsource作爲$newSource接近尾聲。

+0

檢查請在下面,我是如何解決的 – aniltc 2014-11-23 14:33:21

0
$sourceSession = "sourceIds=100252&sourceIds=100111"; 
    $newSource = explode('=',$sourceSession); 
     preg_match_all('!\d+!', $sourceSession, $matches); 


<select id="source" class="form-control source" multiple="multiple"> 
<?php $loop=0; foreach($sources->sources as $row) { 
     if(isset($matches[0][$loop])) { 
         $a = $loop; 
         $mtch = $matches[0][$a]; 
                } 


    if($row->id==$mtch) { 
    echo '<option selected="'.selected.'" value="'.$row->id.'">'.$row->name.'</option>'; 
     $loop = $loop + 1; 
    } 
    else { 
     echo '<option value="'.$row->id.'">'.$row->name.'</option>'; 

    } 
    } ?></select>