Проблема с кодом выпадающего списка PHP / HTML (выбранное значение) - PullRequest
0 голосов
/ 30 июля 2009

Я написал некоторый код PHP, который позволит мне создать выпадающий список html, а затем выбрать, какое должно быть выбранное значение.Код выглядит так:

 $role_drop = "<select name='role'>";

 $role_drop .= "\r\n<option value='Resident Assistant'>Resident Assistant</option>";

 $role_drop .= "\r\n<option value='Community Assistant'>Community Assistant</option>";

 $role_drop .= "\r\n<option value='Head RA'>Head RA</option>";

 $role_drop .= "\r\n</select>"; 

 $result = mysql_query("SELECT role FROM users");

 if (@mysql_num_rows($result)) {

      while ($r=@mysql_fetch_assoc($result)) {  

           $role = $r["role"];
           $role_drop = str_replace(">$role</option>", "selected=\"\" >$role</option>",$role_drop);
           echo $role_drop;
      }
 }

На самом деле этот код содержит множество HTML, но здесь есть весь PHP.Когда я запускаю его, это похоже на работу.Однако предположим, что запрос вернул 4 раскрывающихся окна с ролями (от 4 пользователей), и я должен был изменить или выбрать новую роль для второго возвращенного раскрывающегося окна (с запросом UPDATE), а затем при обновлении страницы всеиз ролей, включающих и ПОСЛЕ того, как в раскрывающемся окне, которое я обновил, их выбранные значения будут отображаться как новые, которые я выбрал в раскрывающемся списке 2-го.отображение неверно выбранного значения.Вот исходный код для 3-го выпадающего списка после того, как я выбрал новое значение для второго:

 <select name="role">
      <option selected="" value="Resident Assistant">Resident Assistant</option>
      <option value="Community Assistant">Community Assistant</option>
      <option selected="" value="Head RA">Head RA</option>
 </select> 

Итак, кажется, что он выбирает правильное значение (Resident Assistant), однако его ТАКЖЕ выбирает "Head"RA ", что я и изменил в предыдущем раскрывающемся списке.

Это очень странно, и я понятия не имею, почему это происходит.Есть идеи?

Спасибо!

Ответы [ 3 ]

1 голос
/ 30 июля 2009

Это потому, что вы обновляете $role_drop каждый раз, поэтому все предыдущие изменения будут отображаться в последующих выпадающих списках. Я бы изменил цикл на что-то вроде этого:

if (@mysql_num_rows($result)) {
     while ($r=@mysql_fetch_assoc($result)) {  
           $role = $r["role"];
           $temp_role_drop = str_replace(">$role</option>", "selected=\"\">$role</option>", $role_drop);
           echo $temp_role_drop;
     }
}

Таким образом, вы не перезаписываете свою оригинальную выпадающую разметку.

1 голос
/ 30 июля 2009

Орехи - забыл уйти от моего кода.Я имел в виду "Это просто <OPTION VALUE="foo" SELECTED>".

0 голосов
/ 30 июля 2009

Не знаю, если это поможет, но в соответствии со спецификацией HTML не следует передавать значение вместе с атрибутом SELECTED каждого OPTION. Это просто.

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