繁体   English   中英

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

[英]Drop down menu always displays 1st option after page processing instead of processed option

我的下拉菜单可以很好地查询,但有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)"; 

欢迎任何帮助,谢谢

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

    <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。

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

<?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语句中识别它

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM