我在模板里面使用下面的代码,请问如何获得显示出来的产品次数,我应用在分页里面的。例如我的产品表里面共有5个分类,共100个产品。但我只选择符合我条件的30个新产品显示出来,于是我给他一个isnew等于1的时候就当成新产品,于是我使用循环也显示出30个产品了,但我无法统计数字30出来,我是想显示为:共30个产品,每页5个,共6页  首页/下一页/上一页/尾页
下面是我的代码:{assign var="productlist" value=$ProductTable->ProductList(0,0,200)}

{foreach from=$productlist item=productinfo name=foo}

{if ($productinfo->isnew == 1)}

     {$productinfo->name}

{/if}

{/foreach}

如果在后面我加上:
共循环的次数:{$smarty.foreach.foo.total}次 ,他会直接显示:共循环的次数:100次 ,而不是30次。
我想上面能统计出30的值,而不是100的值,我如何显示出来30个产品并且能分页显示呢?

解决方案 »

  1.   

    哦,这是SMARTY啊。。话说你在PHP里面查询数据库的时候SQL语句加上个 LIMIET=30不就好了,或者WHILE循环的时候只循环30次,弄个变量为$i,$i初始化为0,每次循环+1,I到30或者已经读取完了所有数据就跳出循环,然后直接把$I的数值传给SMARTY显示就好了呀
      

  2.   

    Ps 
    PHP100视频教程13:PHP+MYSQL分页原理http://www.php100.com/html/shipinjiaocheng/PHP100shipinjiaocheng/2009/0416/807.html
    1、SQL语句中的limit用法
     
    SELECT * FROM table …… limit   开始位置 , 操作条数
     2、学习分页的一种公式
     
    (1)分页原理
     
    所谓分页显示,也就是讲数据库中的结果集,一段一段显示出来
     
    (2)需要的条件
     
    怎么分段,当前在第几段 (每页有几条,当前再第几页)
     
    前10条记录:select * from table limit 0,10 
    第11至20条记录:select * from table limit 10,10 
    第21至30条记录:select * from table limit 20,10
     
    (3)得到公式
     
    (当前页数 - 1 )X 每页条数 , 每页条数
     Select * from table limit ($Page- 1) * $PageSize, $PageSize
     3、parse_url()解析URL函数
     
    parse_url() 是讲URL解析成有固定键值的数组的函数
     
    $ua=parse_url("http://username:password@hostname/path?arg=value#anchor");
     print_r($ua);
     结果:
     
    Array
     (
         [scheme] => http
         [host] => hostname
         [user] => username
         [pass] => password
         [path] => /path
         [query] => arg=value
         [fragment] => anchor
     )
     4、$_SERVER["REQUEST_URI"]
     
    预定义服务器变量的一种,取得除域名后的完整地址和路径
      

  3.   

    这个是ecshop的吧?你找到sql语句在哪里了没,把他limit一下试试
      

  4.   


    感谢kkkgho的如此详细回复,是这样的,产品表里面有许多新产品,我只让当isnew为1的时候就让他为新产品,这个30只是举例,不确定是30个新产品的,我只想取所有的当isnew为1的时候的所有新产品出来分页显示,我就是要读出并统计有多少个这样的数才知道多少个产品。希望再次帮忙写出代码,$i的使用能否直接在smary模板里面用呢?如何写法呢?加在什么位置能实现统计isnew=1的产品数?谢谢
      

  5.   

    {$smarty.foreach.foo.iteration}   
    {$smarty.foreach.foo.total}上面这个分别显示:
    1 2 3 4 5 .... 29 30
    100我如何才能让30的数值给到一个变量里面,再跳出来显示呢?