使用选择和选项并在POST后记住

时间:2011-01-04 17:09:22

标签: php html

使用select和option HTML标签,我使用$ _POST传递信息。

然而,当重新加载页面时,select会重置为原始值。 我希望能够记住已经通过的内容。

<?php
        foreach($data as $value => $title)
        {
            foreach($ag as $first) 
            {
                foreach($af as $second) 
                {
                    echo"<option value='$value-$first-$second'>$title - $first - $second</option>";
                }
            }
        }
        ?>

正如您所看到的,我使用3个foreach循环来填充其中的内容。 如何才能记住我的选择?

感谢阅读。

4 个答案:

答案 0 :(得分:2)

您需要在我的更改中使用select字段的名称代替“your_select_field_name”:

<?php
        foreach($data as $value => $title)
        {
            foreach($ag as $first) 
            {
                foreach($af as $second) 
                {
                    echo "<option value='$value-$first-$second'";
                    if( $_POST['your_select_field_name'] == "$value-$first-$second" ) {
                        echo ' selected="selected"';
                    }

                    echo ">$title - $first - $second</option>";
                }
            }
        }
        ?>

答案 1 :(得分:1)

新页面上所选选项的输出需要如下所示:

<option value='foo' selected>...<option>

答案 2 :(得分:1)

HTML没有内存。默认情况下在<select>表单元素中选择的项目是具有selected属性的项目(如果没有,则为第一个)。只需使用$ _POST中包含的信息生成相应的标记:

<select name="foo">
    <option value="v1">Label 1</option>
    <option value="v2">Label 2</option>
    <option value="v2" selected="selected">Label 3</option>
    <option value="v4">Label 4</option>
</select>

答案 3 :(得分:0)

您需要在正确的选项上设置所选标签。像这样:

<?php
    $postedValue = $_POST['select_name'];
    foreach($data as $value => $title)
    {
       foreach($ag as $first) 
       {
           foreach($af as $second) 
           {
               $computedValue = $value . '-' . $first . '-'. $second;
               if ( $computedValue == $postedValue)  { 
                   $selected = "selected";
               } else { 
                   $selected = '' 
               }
               echo "<option value='$computedValue' $selected>$title - $first - $second</option>";
           }
       }
    }
    ?>

它可能写得更干净,但这是一般的想法。