日期:2014-05-16  浏览次数:20600 次

smarty模板中嵌入php代码,出现啼笑皆非的错误,请大神帮助!
首先,各位大神,咱们就不纠结在应该不应该把php代码嵌入smarty模板中这类问题了,好不?因为我也是在别人代码上增加功能,只要能快速解决问题,啥办法都行。

问题描述:
在表格中,采用foreach的方式从$items读取每个记录,并且在表格中每行显示若干关键词相应的内容。$items是来自于后端php代码处理的结果。现在我需要在显示某个关键词内容时加个判断,读取相应内容,并且做个小链接。
代码如下:

 {foreach $items as $item}
            {strip}
。。。。。。。。。。。。。。
。。。。。。。。。。。。。。
{if $item->kind == "folder"}
                <td class="name"><p><a href="/Views/Regions/{$item->id}">{$item->name}</a></p></td>
               {elseif $item->type != "link"}
                <td class="name"><p><a href="/Regions/Files/Download/{$item->id}">{$item->name}</a></p></td> 
               {else}
                                              {$link_content=""}
                                              {$this_id=$item->id}
  {$search_link_query="select * from archive.file where id='$this_id'"}
  {$con = mysqli_connect("localhost","root","root")}
  {$result = mysqli_query($con,$search_link_query)}
  {mysqli_close($con)}
  {$row=mysqli_fetch_row($result)}
                                                  {$link_content=$row[8]}
  
<td class="name"><p><a href="{$link_content}" target="_blank">{$item->name}</a></p></td>
               {/if}
........................
...........................
    {/strip}
            {/foreach}



奇怪的问题发生了,网页功能显示的完全正确,但在表格上方出现若干“1”。我一句一句删除代码并检测,发现{$con = mysqli_connect("localhost","root","root")}产生了“1”。只要删除这句话,就没有1产生、出现出错信息;如果不删除这句话而删除后面的代码,则有1,且后面出现出错信息。

大牛们,这个是咋回事情?我该如何修改呢?
其实我很想把这部分代码放到后端文件中去,但这里一个关键变量$item->id是在循环中读取的,我后面没有办法多次读取、并搜索该条记录中的关键词content中的值,且返回到tpl文件中去显示出来。

该如何处理呢?请大牛们赐教啊。
------解决方案--------------------
这个可以写在PHP里面,然后用用标签替换掉啊,在模板里面写什么连接数据库呢?
------解决方案--------------------
还是改你php吧 吧要添加的内容循环添加进去 页面直接调用就行了
------解决方案--------------------
模板中不要写逻辑代码,尽量都写到php中去。

引用
2.smarty模板中前端的循环,如果与后端php代码处理动态的进行数值传输呢?
我需要把每次循环中的关键变量传到后端,经过处理后又把结果返回该循环中呢,并且在该次循环中显示php传送过来的值。如果做到呢?
交互不外乎两种,form提交到后端,或者