2014-03-07 57 views
0

這是我smarty的PHP代碼。PHP循環與smarty

<p> 
    <label for="dob">{$smarty.const.LBL_DATE_OF_BIRTH}</label> 
    <span> 
     <select class="left" id="bday" name="bday" style="width:60px;" > 
      <option value="">- {$smarty.const.LBL_DAY} -</option>{$days} 
     </select> 
    </span> 
</p> 

和我的PHP代碼是

for($bd=1;$bd<=31;$bd++) 
{ 
    $bdkey=($bd<10)?"0".$bd:$bd; 
    $selected=''; 
    if($bdkey==date("d",strtotime($data['dob']))) $selected ='selected'; 
    $days.="<option value=".$bdkey." $selected >".$bdkey."</option>"; 
} 

$smarty->assign('days',$days); 

該值插入數據庫。但它沒有選擇價值。就像,如果我選擇15,並保存,它會插入數據庫。但沒有顯示選定的價值。提前致謝。

+0

嘗試使用:'$ selected ='selected =「selected」';' –

+0

@OscarPérez不,這不起作用 – Prakash

+1

可能是你的'if($ bdkey == date(「d」,strtotime($ data [ 'dob'])))'語句返回false。打印每張支票以查看,爲什麼你沒有得到預期的結果。 – iCore

回答

3

Smarty的這種做法,Smarty具有極好的功能html_options來創建html選擇字段。

PHP:

$days = array("- ".LBL_DAY." -"); 
for($bd=1;$bd<=31;$bd++) { 
    $days[] = ($bd<10)?"0".$bd:$bd; 
} 

$smarty->assign("days", $days); 
$day = date("d",strtotime($data['dob'])); 
$smarty->assign("dob", $day); 

的Smarty:

<p> 
    <label for="dob">{$smarty.const.LBL_DATE_OF_BIRTH}</label> 
    <span> 
     {html_options values=$days output=$days selected=$dob class="left" id="bday" name="bday" style="width:60px;"} 
    </span> 
</p> 

這將使用數組和PHP的數據,並創建包括所有選項的完整選擇元素,與當前存儲已經被選中。