PHP-如何显示正确的选定<option>值?

时间:2018-07-23 02:12:32

标签: php html

我正在php文件中编写html代码。
我有一个下拉菜单,允许用户使用类似这样的月份和年份查询结果。

enter image description here

查询使用默认的当前月份和年份进行搜索,但是例如,当我搜索April 2018时,结果是正确的,但是下拉选择选项仍然显示July 2018


我的代码:

<table width="80%"  border="0" align="center" cellpadding="7" cellspacing="2">
<tr bgcolor="#ffffff">
  <td height="6" colspan="2" bgcolor="#E6E6FA">
    Month 
    <select name="soutlet" id="soutlet">
      <option selected="selected" value="7">July</option>
      <option value="">-----------</option>
      <option value="1">January</option>
      <option value="2">February</option>
      <option value="3">March</option>
      <option value="4">April</option>
      <option value="5">May</option>
      <option value="6">June</option>
      <option value="7">July</option>
      <option value="8">August</option>
      <option value="9">September</option>
       <option value="10">October</option>
      <option value="11">November</option>
      <option value="12">December</option>
    </select> 
    Year
    <select name="soutletto" id="soutletto">
      <option selected="selected" value="2018">2018</option>
      <option value="">-----</option>
      <option value="2016">2016</option>
      <option value="2017">2017</option>
      <option value="2018">2018</option>    
    </select>      
<input type="submit" name="btn_search" id="btn_search" value="Search" ></td>
</tr>

如何修改我的html代码,以使下拉列表显示正确的monthyear?如果我搜索2018年4月,它将显示

enter image description here

5 个答案:

答案 0 :(得分:2)

如果您使用数组和循环(即<select>)来创建<?php $months = array( 1=>"January", 2=>"February", 3=>"March", 4=>"April", 5=>"May", 6=>"June", 7=>"July", 8=>"August", 9=>"September", 10=>"October", 11=>"November", 12=>"December" ); ?> <select name="soutlet" id="soutlet"> <option value="">-----------</option> <?php foreach($months as $key=>$month){ //if posted value matches current value add selected $sel = ($key==$_POST['soutlet']) ? ' selected="selected"' : ''; echo '<option value="'.$key.'" '.$sel.'>'.$month.'</option>'; } ?> </select> ,则容易一些。

<?xml version="1.0" encoding="Shift_JIS"?>
<!--  <!DOCTYPE SERVICETICKETVIEW SYSTEM "SERVICETICKETVIEW.dtd">  --><SERVICETICKETVIEW><SERVICES><SERVICE>amrankr0</SERVICE>.....
...

答案 1 :(得分:0)

您应该在$_post['month'] = option value

时添加选定的属性

$_post用于post请求,$_get用于get请求

答案 2 :(得分:0)

要解决此问题,您可以在提交表单时将月份值存储到变量中。如果您使用POST方法(进行一些验证),则类似于$month = $_POST['soutlet']。 然后,您必须在html select>选项中比较此值并将其设置为被选中。像这样在<option>标签内

<option value="1" <?php echo isset($month) ? ($month == '1' ? 'selected' : '') : ''; ?> >January</option>

并且不要忘记删除从<option>中选择的静态定义,并使用与年份相同的逻辑。

答案 3 :(得分:0)

请同时创建年/月打印功能,并根据该功能设置功能参数

function month_select($month = '', $name = 'soutlet', $class = 'soutlet', $id = 'soutlet')
    {
        $month_sel = '<select id="'.$id.'" name="'.$name.'"  name="'.$class.'" >';
        $month_sel .= '<option value="">Select Month</option>';
        for($i = 1; $i <= 12; $i++)
        {
            $month_sel .= '<option value="'.$i.'" '.(($month == $i)?'selected="selected"':'').'>'.date("F", mktime(0, 0, 0, $i, 10)).'</option>';
        }
        $month_sel .= '</select>';
        return $month_sel;
    }
    function year_select($year = '', $name = 'soutletto', $class = 'soutletto', $id = 'soutletto')
    {
        $year_sel = '<select id="'.$id.'" name="'.$name.'"  name="'.$class.'" >';
        $year_sel .= '<option value="">Select Year</option>';
        for($i = 0; $i <= 5; $i++)
        {
            $cur_year = date("Y") - $i;
            $year_sel .= '<option value="'.$cur_year.'" '.(($cur_year == $year)?'selected="selected"':'').'>'.$cur_year.'</option>';
        }
        $year_sel .= '</select>';
        return $year_sel;
    }

    echo month_select($_GET['soutlet']);
    echo year_select($_GET['soutletto']);


OR 

You can use POST method


echo month_select($_POST['soutlet']);
echo year_select($_POST['soutletto']);

答案 4 :(得分:0)

假设您要发布到同一页面,则可以执行以下操作。 (仅简化了1个月和1年,但您知道了)

table width="80%"  border="0" align="center" cellpadding="7" cellspacing="2">
<tr bgcolor="#ffffff">
<td height="6" colspan="2" bgcolor="#E6E6FA">
Month 
<select name="soutlet" id="soutlet"> 
<option <?php if($POST['soutlet']==7) echo 'select="selected"'; ?> value="7">July</option>
</select> 
Year
<select name="soutletto" id="soutletto">
  <option <?php if($POST[soutletto]==2018) echo 'select="selected"'; ?> value="2018">2018</option>
</select>