Php 从URL中的参数标记selectbox中的元素

Php 从URL中的参数标记selectbox中的元素,php,parameters,foreach,drop-down-menu,Php,Parameters,Foreach,Drop Down Menu,我对选择框有一个小问题,它必须从URL参数中标记一些选项 我有一个URL,可以像这样 index.php?page=edit&lid=4&recs=1,4,7&hl=Test&lhash=7c2cd87dad07ac99a00e92041a5d6a38 其中,我想使用recs参数中的1,4,7在我的选择框中标记ID为1、4和7的邮件组,如 <select name="groups" multiple="multiple"> <option va

我对选择框有一个小问题,它必须从URL参数中标记一些选项

我有一个URL,可以像这样

index.php?page=edit&lid=4&recs=1,4,7&hl=Test&lhash=7c2cd87dad07ac99a00e92041a5d6a38
其中,我想使用recs参数中的1,4,7在我的选择框中标记ID为1、4和7的邮件组,如

<select name="groups" multiple="multiple">
<option value="1" selected="selected">Group 1</option>
<option value="2">Group 2</option>
<option value="3">Group 3</option>
<option value="4" selected="selected">Group 4</option>
<option value="5">Group 5</option>
<option value="6">Group 6</option>
<option value="7" selected="selected">Group 7</option>
<option value="8">Group 8</option>
</select>
然后

<option value="'. $row["mailgroup_id"] .'" '. $sel .'>'. $row["mailgroup_name"] .' - '. $row["country"] .'</option>
”$行[“邮件组名称”]。-'$行[“国家”]。'

但这似乎不起作用,因为所有组都被标记了

在我看来,
$sel
的值在整个循环中不断变化,但当您打印时,它只是在上一次循环迭代中设置的值。你需要的是这个

foreach($recis as $rec) {
    if($row["mailgroup_id"] == $rec) {
        $sel = 'selected="selected"';
    } else {
        $sel = '';
    }
    // print the option tag here or store the $sel value 
    // for the given mailgroup_id
}   

p、 为什么叫它
$sel
而不是
$selected
?“sel”可能意味着很多事情,不要害怕更长的名称-它提高了可读性

为什么不尝试在邮件组id记录集上循环

$recis = explode(",", $_GET["recs"]);

while($row=mysql_fetch_array($rs))
{
   if( in_array($row["mailgroup_id"], $recis)) 
   {  
      $sel = 'selected="selected"';
   }
   else 
   {
      $sel = '';
   }
   // Option Code
}
选项代码

<option value="'. $row["mailgroup_id"] .'" '. $sel .'>'. $row["mailgroup_name"] .' - '. $row["country"] .'</option>
”$行[“邮件组名称”]。-'$行[“国家”]。'
试试这个:

$recis = explode(",", $_GET["recs"]);
foreach($recis as $rec) {
  if($row["mailgroup_id"] == $rec) {
     $row["selected"] = 'selected="selected"';
  } else {
     $row["selected"] = '';
  }
}
在html中,您可以执行以下操作:

<option value="'. $row["mailgroup_id"] .'" '. $row['selected'].'>'. $row["mailgroup_name"] .' - '. $row["country"] .'</option>
”$行[“邮件组名称”]。-'$行[“国家”]。'
<option value="'. $row["mailgroup_id"] .'" '. $row['selected'].'>'. $row["mailgroup_name"] .' - '. $row["country"] .'</option>