如何在提交时从下拉菜单中保存所选值

时间:2014-08-22 12:45:40

标签: php forms submit

<form action="" method="post">

        <?php   echo "<select id='date' name='date' class='input' >"; 
                    echo '<option value="">Please Select Date</option>'?>
                <?php
                        $sql1 = "SELECT Distinct date,day
                                 FROM errorlog order by date";

                        $result1=mysql_query($sql1,$con);
                        if (!$result1)
                            die ("Could not retrieve date" .mysql_error());

                            for ($counter = 0; $row = mysql_fetch_row ($result1); $counter++) 
                                print ("<option value = '$row[0]'>$row[1] - $row[0]</option>");


                    echo "</select>";
                ?> 
</form>

即使提交,我也需要从下拉菜单中保存所选值,这意味着每当他从下拉菜单中选择一个值并点击提交时,值就会保留在选择

1 个答案:

答案 0 :(得分:0)

我建议在输出之前获取<select>的数据,就像你可以将SQL和输出逻辑分开一点并保持整洁。

$sql1 = "SELECT Distinct date,day
         FROM errorlog order by date";

$result1 = mysql_query($sql1,$con);
if (!$result1)
    die ("Could not retrieve date" .mysql_error());

$data = array();
for ($counter = 0; $row = mysql_fetch_row ($result1); $counter++) {
    $data[] = $row;
}

这将获取数据并暂时将其保存到$data。一次担心。然后,如果用户通过POST提交,他提交的值将在$_POST['date']。我们可以将该值与$data中的值进行比较,如果selected="selected"中的行与$data匹配,则使用HTML if (!empty($_POST['date'])) { $user_date = $_POST['date']; } else { $user_date = ''; } echo '<form ...>'; // etc. echo '<select name="date">'; foreach ($data as $row) { if ($row[0] == $user_date) { echo "<option value = '$row[0]' selected='selected'>$row[1] - $row[0]</option>"; } else { echo "<option value = '$row[0]'>$row[1] - $row[0]</option>"; } } echo '</select>'; 属性。

selected="selected"

请注意,如果<select>可以多次使用相同的值,则会发出多个{{1}}输出。