如何在提交<select>循环时保留表单值?</select>

时间:2011-11-01 18:18:54

标签: php

如何在提交循环时保留表单值?

我有这样的事情:

<?php
    printf ("<optgroup label=\"CATEGORIES\">");

    foreach ($category as $key => $val) {
    printf ("<option value=\"$key\">$val</option>");
    }
    printf ("</optgroup>");
?>

在我的表单的另一部分点击提交时,它会将select中的值重置为顶部的值。我希望它保持相同的价值。怎么样?对于像输入框这样的东西我有这个有效:

<option value="5" name="results" <?php if($_GET["results"] == '5'){  ?> selected="selected" <?php } ?> >5</option>

这是有效的,因为我没有动态填充数据库的下拉列表,因此我不需要循环来循环遍历值并填充选择。

3 个答案:

答案 0 :(得分:1)

printf ("<optgroup label=\"CATEGORIES\">");

foreach ($category as $key => $val) {
  $option = '<option value="' . $key . '"';
  if ($_GET['select_name'] == $key) {
    $option .= ' selected="selected"';
  }
  $option .= ">$val</option>";

  print $option;
}
printf ("</optgroup>");

答案 1 :(得分:0)

这取决于您的提交按钮的操作发送给您的位置。 您将需要获取值,最有可能形成$ _POST并在表单中恢复它们。 否则,您可以使用AJAX提交表单,而不用担心它被清除。

答案 2 :(得分:0)

foreach ($category as $key => $val) {
    $sel = ($key == $_GET['results']) ? ' selected="selected"' : '';
    printf ("<option value=\"$key\"$sel>$val</option>");
}

基本上,当/您达到提交的$ key值时,动态插入所选属性。