2014-04-11 102 views
0
public static function load_months() 
{ 
    $output = "\n <select id='month' name='month'>"; 
    $output .= "\n <option value='0'>Month</option>"; 

    for($i = 1 ; $i <= 12; $i++) 
    { 
     $timestamp = mktime(0, 0, 0, $i, 10, 1980); 
     $monthName = date("F", $timestamp); 
     $output .= "\n <option value='$i'>$monthName</option>"; 
    } 

    $output .= "\n </select>"; 
    echo($output); 
} 

我已经使上面的代码显示选择的月份名称。我想让这个脚本记住发布的选定选项,就像我的名字字段在会话数组中一样。这个怎么做?记住选择字段值

<input type="text" name="fname" value="<?= $user_data->first_name ?>" placeholder="First Name" required> 

回答

2

您想要使用选项元素的“selected”属性。

public static function load_months($user_data = null) 
{ 
    $output = "\n <select id='month' name='month'>"; 
    $output .= "\n <option value='0'>Month</option>"; 

    for($i = 1 ; $i <= 12; $i++) 
    { 
     $selected = (!is_null($user_data) && isset($user_data->month) && $user_data->month == $i ? 'selected="selected"' : ''); 
     $timestamp = mktime(0, 0, 0, $i, 10, 1980); 
     $monthName = date("F", $timestamp); 
     $output .= sprintf("\n <option value='%s' %s>%s</option>",$i,$selected,$monthName); 
    } 

    $output .= "\n </select>"; 
    echo($output); 
} 

然而,如果你关心可伸缩性。你可以做这样的事情

public static function load_months($selectedMonth = null) 
{ 

    $output = "\n <select id='month' name='month'>"; 
    $output .= "\n <option value='0'>Month</option>"; 

    for($i = 1 ; $i <= 12; $i++) 
    { 
     $selected = (!is_null($selectedMonth) && is_numeric($selectedMonth) && $selectedMonth == $i ? 'selected="selected"' : ''); 
     $timestamp = mktime(0, 0, 0, $i, 10, 1980); 
     $monthName = date("F", $timestamp); 
     $output .= sprintf("\n <option value='%s' %s>%s</option>",$i,$selected,$monthName); 
    } 

    $output .= "\n </select>"; 
    echo($output); 
} 

而你只需将选定的月份传递给方法。

+0

它不工作的兄弟。我正在尝试你的方法,但每次我发布我的表单,从下拉菜单中选择一个月,它仍然是相同的'月' –

+0

你是否记得要传递一个月或一个user_data元素到函数? –

+0

我记得存储在类数据成员中的传递月份,然后如果用户选择了注册表单,并且在某些字段中错误地得到了错误,那么字段记得它是最后一个月,不会自行重置 –

0

选择的值作为参数传递给函数 -

public static function load_months($selected) 
{ 
    $output = "\n <select id='month' name='month'>"; 
    $output .= "\n <option value='0'>Month</option>"; 

    for($i = 1 ; $i <= 12; $i++) 
    { 
     $timestamp = mktime(0, 0, 0, $i, 10, 1980); 
     $monthName = date("F", $timestamp); 
     if($i==$selected) 
     { 
     $output .= "\n <option value='$i' selected='selected'>$monthName</option>"; 
     } 
     else 
     { 
      $output .= "\n <option value='$i'>$monthName</option>"; 
     } 
    } 

    $output .= "\n </select>"; 
    echo($output); 
} 
0

像这样:

if (isset($user_data->month) && $user_data->month == $i) { 
      $output .= "\n <option selected='selected' value='$i'>$monthName</option>"; 
} else { 
      $output .= "\n <option value='$i'>$monthName</option>"; 
}