2011-09-25 134 views
1

我想从数组中的数据库检索选项/值我想设置这些选项/值默认情况下在多选列表中选择和将它们显示给用户,在那里他们将能够在必要时更新他们的数据。如何从数组中默认设置多个选择选项

//data in database 
$mytitle = array(
    'Arbitrator', 
    'Attorney', 
    'Student', 
    'Other' 
); 

//data for multiple select 
$title = array(
    'Judge' , 
    'Magistrate' , 
    'Attorney' , 
    'Arbitrator', 
    'Title Examiner' , 
    'Law Clerk','Paralegal' , 
    'Intern' , 
    'Legal Assistant', 
    'Judicial Assistant', 
    'Law Librarian' , 
    'Law Educator' , 
    'Attorney', 
    'Student', 
    'Other' 
); 

echo "<select name='title[]' multiple='multiple'>"; 

$test = implode(',', $mytitle); 

for ($i=0; $i<=14; $i++) { 
    if($test == $title[$i]) { 
     echo "<option selected value='$title[$i]'>$title[$i]</option>"; 
    } 
    else { 
     echo "<option value='$title[$i]'>$title[$i]</option>"; 
    } 
} 

echo "</select>"; 

回答

3

我想你可能有逻辑错误。试试这个作为你的循环:

foreach ($title as $opt) { 
    $sel = ''; 
    if (in_array($opt, $mytitle)) { 
     $sel = ' selected="selected" '; 
    } 
    echo '<option ' . $sel . ' value="' . $opt . '">' . $opt . '</option>'; 
} 
+0

小的修改,如果u保持这样的代码,它会显示一切都很简单结果为Selected。 所以要做的是'if(in_array($ opt,$ mytitle)){ $ sel ='selected =“selected”'; echo''。 $ opt。 ''; } else { echo''; }' –

0

使用in_array()函数。

for ($i=0; $i<=14; $i++) { 
    if(in_array($title[$i], $mytitle)){ 
    echo "<option selected value='$title[$i]'>$title[$i]</option>"; 
    }else { 
    echo "<option value='$title[$i]'>$title[$i]</option>"; 
    } 
} 
0
foreach ($title as &$x) 
{ 
echo "<option ".(in_array($x, $mytitle)?"selected":"")." value='$x'>$x</option>"; 
} 
0

使用jQuery的帮助,其中选择具有ID测试

$('#test option').attr('selected', 'selected'); 

JSFiddle Example