2013-03-28 137 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>';