额,遇到这样的问题,数据库中有一个字段,a  。php文件从数据库中取得所有记录,分配到模板中去。
     模板中section一下,循环输出下拉菜单。现在要判断如果a=0,则
<option value='0' selected=selected>普通用户</option>
<option value='1' >管理员</option>
如果a=1则
<option value='0' >普通用户</option>
<option value='1' select=select>管理员</option>不知道大家遇到这种情况是怎么解决的?提供点思路吧?
   我只知道最笨的一种方法是在php中判断
while($row = $query->fetch_array()){
           $result[]=$row;
       if($row[a]==0){
           $select[] = "<option value='0' selected=selected>普通用户</option><option value='1' >管理员</option>" ;
   }
       if($row[a]==1){
           $select[] = "<option value='0'>普通用户</option><option value='1' selected=selected>管理员</option>" ;
   }
}
然后分配$select到模板中,遍历输出来……
但是感觉这样的代码很烂、看着都不爽。。所以想试着换种思维、想在模板中做这样的写法,
<option value='0' {$select[0].sel}>普通用户</option><option value='1' {$select[1].sel}>管理员</option>
遍历加上判断,如果a=0则,$select[0].sel="selected=selected";$select[1].sel="";目前正在试验这种方法。
    我是个菜……对于这种问题,遇到好几次了,也没想明白有什么巧妙的方法,希望大家指点下……谢谢、

解决方案 »

  1.   

    smarty中可以用 {if ..}...{/if} 来判断。参考: http://www.hbcms.com/main/smarty/language.function.if.html
      

  2.   

    我知道可以用if判断。
    <{section name=n loop=$result}>
    <{foreach from=$select item=s key=sk}>
    <{foreach from=$s item=v key=k}>
            <{if $k == $result[n].id}>
       <option value='0' <{$select[0][$k]}> >未启用</option>
                        <option value='1' <{$select[1][$k]}> >启用</option>
    <{/if}>
    <{/foreach}>
    <{/foreach}>
    <{/section}>
    这样实现了、
         我就是想知道有没有更好一点的方法?或者思路?大牛们遇到这种问题都是怎么做的?
      

  3.   

    smarty 已经提供了专门的方法:html_options
      

  4.   

    smarty 已经提供了专门的方法:html_options
      

  5.   

    使用 html_options 标签吧,更简便!
      

  6.   

    请参考smarty手册:http://download.csdn.net/detail/dmtnewtons/4271275
    7. Built-in Functions -> {if},{elseif},{else}