2013-03-28 138 views
0

我有一个下拉框,它包含1-31天,并且我想存储/保存用户返回页面时以前选择的内容。PHP - 动态填充的选择下拉菜单中的预选/保存选项

我的函数生成的盒子是:

public function fetchDDMMYYYYDropdown($select_d,$session_d) { 
     $days = range (1, 31); 
     $dropdown .= '<select name="'.$select_d.'">'; 
     foreach($days as $key=>$name){ 
      if($session_d==$name){ 
       $session = 'selected'; 
      } 
      $dropdown .= '<option value="'.sprintf("%02d", $name).'" selected="'.$session.'">'.sprintf("%02d", $name).'</option>'; 
     } 
     $dropdown .= '</select>'; 

     return $dropdown; 
    } 

我的形式在这个页面上:

<?php 
session_start(); 
include("includes/func.class.php"); 

$dob = $func->fetchDDMMYYYYDropdown('dob_d', $_SESSION['dob_d']); 
?> 
<form action="t35t_send.php" method="get"> 
<?php echo $dob;?> 
<input type="submit" value="send"> 
</form> 

而且它进入这个保存会话变量:

session_start(); 
$_SESSION['dob_d'] = $_GET['dob_d']; 
$dob = $_SESSION['dob_d']; 
echo $dob; 

我可以告诉$ _SESSION ['dob_d']是正确的,并保存,因为我可以输出它里面的函数和初始化L型网页 - 所以它只是下面,绝不能是正确的,但此刻的下拉框只是重置回第一个值,而不是保存的会话:

if($session_d==$name){ 
    $session = 'selected'; 
} 
$dropdown .= '<option value="'.sprintf("%02d", $name).'" selected="'.$session.'">'.sprintf("%02d", $name).'</option>'; 

回答

1

试试这个

function fetchDDMMYYYYDropdown($select_d,$session_d) { 

    $days = range (1, 31); 
    $dropdown .= '<select name="'.$select_d.'">'; 
    foreach($days as $key=>$name){ 
     if($session_d==$name){ 

      $session = 'selected = selected'; 
     } 
     else 
     { 
      $session = ''; 
     } 
     $dropdown .= '<option value="'.sprintf("%02d", $name).'"'.$session.'">'.sprintf("%02d", $name).'</option>'; 
    } 
    $dropdown .= '</select>'; 

    return $dropdown; 
} 

的问题是,如果连“选择”有没有在“选项”即便如此,价值被选中,并在以前的代码..“选择将在那里为每日期..所以它显示'31'。 我已经更改了代码,以便“selected = selected”获取已保存值的回显。

希望它可以帮助你

+0

很高兴帮助你mate .. – alwaysLearn 2013-03-28 11:22:04

0

粗略估计您如果条件不返回true,

尝试检查两个变量的值。

只要确认你能否替换下面的代码并尝试。

if($session_d == sprintf("%02d", $name)){ 
    $session = 'selected'; 
} 
$dropdown .= '<option value="'.sprintf("%02d", $name).'" selected="'.$session.'">'.sprintf("%02d", $name).'</option>';