Отметить элементы в поле выбора из параметра в URL - PullRequest
1 голос
/ 21 февраля 2012

У меня небольшая проблема с окном выбора, в котором должны быть некоторые отмеченные параметры из параметра URL.

У меня есть URL, который может выглядеть следующим образом

index.php?page=edit&lid=4&recs=1,4,7&hl=Test&lhash=7c2cd87dad07ac99a00e92041a5d6a38

Где я хочуиспользовать 1,4,7 из параметра recs, чтобы пометить почтовые группы с идентификаторами 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>

Я пытался использовать это, чтобы создать переменную с selected = "selected"value

$recis = explode(",", $_GET["recs"]);
foreach($recis as $rec) {
   if($row["mailgroup_id"] == $rec) {
      $sel = 'selected="selected"';
   } else {
      $sel = '';
   }
}

А потом

<option value="'. $row["mailgroup_id"] .'" '. $sel .'>'. $row["mailgroup_name"] .' - '. $row["country"] .'</option>

Но, похоже, это не работает, поскольку все группы помечаются

Ответы [ 3 ]

3 голосов
/ 21 февраля 2012

почему бы вам не попробовать цикл в наборе записей mailgroup_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>
0 голосов
/ 21 февраля 2012

Попробуйте это:

$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>
0 голосов
/ 21 февраля 2012

Мне кажется, что значение $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.s. зачем называть это $sel вместо $selected? «sel» может означать много вещей, не бойтесь длинных имен - это улучшает читаемость

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...