分析ecshop的分页使用原理

2009-08-07 16:05 来源:www.chinab4c.com 作者:ecshop专家

     下午和朋友做了个分页的的东西,很简单,而且是在模板中实现的。但是朋友一定要追着我问分页原理,分析ecshop分页如何用?时间紧张,没时间去研究,就和他简单的谈了谈如何使用ecshop分页面.

     比如评论里面.将所有的评论检索出来,进行分页面.还好,不需要带如何参数.先看下面函数.

     function get_comments($num,$start)
{
  
   $sql =" SELECT * FROM ecs_comment WHERE status = 1 AND parent_id = 0 and comment_type=0 ORDER BY add_time DESC  limit $start, $num";
 
  //echo $sql;  
  //$res = $GLOBALS['db']->SelectLimit($sql, $num, $start);    
  $res = $GLOBALS['db']->getAll($sql);
  $comments = array();
  foreach ($res AS $idx => $row)
  {
   $comments[$idx]['user_name']       = $row['user_name'];
   $comments[$idx]['content']       = $row['content'];
   $comments[$idx]['id_value']       = $row['id_value'];
   $comments[$idx]['add_time']       = local_date("Y-m-d H:i:s",$row['add_time']);
   $comments[$idx]['goods_name']     = $GLOBALS['db'] -> getOne("select goods_name from ecs_goods where goods_id = ".$row['id_value']);
   $comments[$idx]['shop_price']     = $GLOBALS['db'] -> getOne("select shop_price from ecs_goods where goods_id = ".$row['id_value']);
   $comments[$idx]['replay']         = $GLOBALS['db'] -> getOne("select content from ecs_comment where parent_id = ".$row['comment_id']);
   $comments[$idx]['shop_price']     = price_format($comments[$idx]['shop_price']);
  }
  return $comments;
}

     取部分分页数据,条数用limit控制,$start,$num表示分页起始位置.

     $sql = "SELECT COUNT(*) FROM  ecs_comment";
    $record_count = $GLOBALS['db']->getOne($sql);
 $page = isset($_REQUEST['page']) ? intval($_REQUEST['page']) : 1;
  
    $pager = get_pager('ping.php', array(), $record_count, $page, 10);
    $msg_lists = get_comments(10, $pager['start']);
  
    $GLOBALS['smarty']->assign('rand',      mt_rand());
   
    $GLOBALS['smarty']->assign('pager', $pager);
    $GLOBALS['smarty']->assign('my_comments',$msg_lists);

    把分页的数据拿过来,给smarty,取页面ID.这里有ecshop中的get_pager函数,来处理分页.

   最后在模板中加上翻页模板

    <!-- #BeginLibraryItem "/library/pages.lbi" --><!-- #EndLibraryItem -->  

   完成了分页操作.

   来源:中国B4C电子商务