下拉菜单始终显示页面处理后的第一个选项而不是已处理选项

时间:2012-05-10 23:44:19

标签: mysql drop-down-menu

我的下拉菜单可以很好地查询,但有2个问题:

1 - 当我选择一个选项并点击提交按钮时,查询返回正常,但不是显示已处理选项的下拉菜单,它实际上始终显示第一个选项,无论处理选项如何。

2 - 当我进入我的页面时,在我从下拉菜单中选择一个选项并点击提交之前,没有数据显示。我希望页面在第一次输入时默认处理第一个选项。

<form action="http://localhost/xampp/mydomain.com/?page_id=2283" method='post'>
<select name="selected_date">
    <option value="2012-05-01">01.05.2012</option>
    <option value="2012-04-01">01.04.2012</option>
    <option value="2012-03-01">01.03.2012</option>
    </select>
    <input type="submit" VALUE="Go"/>
    </form>

$date=$_POST['selected_date'];

$query = " SELECT * from table1 WHERE
 `drop_date` > '$date' AND
 `drop_date` <= DATE_ADD('$date', INTERVAL 1 YEAR)"; 

欢迎任何帮助,谢谢

2 个答案:

答案 0 :(得分:2)

我从您的问题中假设,在选择日期后,当访问者点击“开始”按钮时,访问者会被重定向回同一页面。要让他们的选择显示在下拉列表中,您必须先在元素之前阅读他们的选择。

    <select name="selected_date">
      <?php
        if (isset($_POST['selected_date'])){
          $selected_date = $_POST['selected_date'];
          echo "
            <option selected value=\"".$selected_date."\">".$selected_date."</option>
          "; 
        }
      ?>
      <option value="2012-05-01">01.05.2012</option>
      <option value="2012-04-01">01.04.2012</option>
      <option value="2012-03-01">01.03.2012</option>
    </select>

基本上它所做的就是检查表单是否已发布并获取所选日期,为select元素添加一个选项,并将该日期作为选中的值,以便在页面的下拉列表中选择该选项负载。

至于您在第一页加载时未显示任何选项的页面问题,我相信您的问题是您的select元素中的所有选项都没有“selected”属性。

我希望这可以帮助你...让我们发布!

BelgianAlien。

答案 1 :(得分:0)

好吧,在这个问题上努力奋斗,我将回答我自己的问题:

<?php
$date=$_POST['selected_date']; //retrieves submitted option
?>

<form action="file.php" method='post'> As of :
<select name="selected_date">
<option value="2012-05-01" <?php if ( $date == '2012-05-01' ) {echo " selected";}?> >01.05.2012</option>
<option value="2012-04-01" <?php if ( $date == '2012-04-01' ) {echo " selected";}?> >01.04.2012</option>
<option value="2012-03-01" <?php if ( $date == '2012-03-01' ) {echo " selected";}?> >01.03.2012</option>
</select>
<input type="submit" VALUE="Get Data"/>
</form>

<?php
if($_POST['selected_date'])
$date=$_POST['selected_date'];
else
$date="2012-05-01"; // assigns a default option to be processed until user submits another one (to avoid empty feedback on 1st page load)
?> // 

使用BelgianAlien的答案我最后添加了第一个检索提交选项的代码,因此可以在以下选项中识别'IF语句

我还添加了最后一行代码行,这些代码行可以在首页加载时处理默认选项,避免来自服务器的空反馈。