2014-03-07 58 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的数据,并创建包括所有选项的完整选择元素,与当前存储已经被选中。