我想问一下数字分页数字的显示问题
就是我想显示5 个可以点击的分页数字
怎么写 主要是跟什么有关系
例如 下面显示一共有12页 但是在一行全部显示了 
我怎么能让他只显示5页 然后点到下一页的时候在显示剩下的几个页呢?
在线等
上一页   1   2   3   4   5   6   7   8   9   10   11   12      下一页   Pages: 9/12

解决方案 »

  1.   

    $sql="select count(*) from art";
    $resultc=mysql_query($sql) or die(mysql_error());
    $rsc=mysql_fetch_array($resultc);
    $num=$rsc[0];//取得数据表的总记录数
    $pagesize=15; //每页显示的页数
    if($_GET[page]<>"")
    {
    $page=$_GET[page]-1;
    if($page<0)$page=0;
    if($page>(intval($num/$pagesize)))$page=intval($num/$pagesize);
    }
    else
    $page=0; //以上是取当前页码$sql="select * from art order by art_id DESC limit ".$pagesize*$page.",".$pagesize;//这条SQL语句关键是limit 后面的,读出数据表的第几条到第几条数据显示内容这略去了,再下来是分页这里,这里实现起来比较麻烦,大家可以复制使用<div class="page">
    共<?php echo ceil($num/$pagesize);?>页
    <a href="index.php?page=1">首页</a>
    <?php if($page>0) echo " <a href='index.php?page=".$page."'>上一页</a> ";
    for($i=($page>4?($page-3):1);$i<=(ceil($num/$pagesize)<9?ceil($num/$pagesize):(ceil($num/$pagesize)>($page+5)?($page+($page>5?5:(9-$page))):ceil($num/$pagesize)));$i++)
    {
    if(($page+1)==($i))
    echo "&nbsp;".$i."&nbsp;";
    else
    echo "<a href=index.php?page=".$i.">[".($i)."]</a>";
    }
    ?><?php if($page<ceil($num/$pagesize)-1) echo " <a href='index.php?page=".($page+2)."'>下一页</a> ";?><a href="index.php?page=<?php echo round(ceil($num/$pagesize));?>">末页</a>
    </div>
      

  2.   

    利用URL参数,然后进行前后页面数量判断,根据判断的结果而灵活地显示数字和链接。
      

  3.   

    为开拓你们的思路,给一个比较通用的函数
    应该说,分页条与数据库操作并无直接关系。所以函数中不包含数据库操作
    /**
     * 函数名 article_page
     * 功能 根据模板生成分页条
     * 参数
     *  style 分页条模板
     *  count 总记录数
     *  pagesize 每页记录数
     *  page 当前页号(从1开始计算)
     *  barview 可见的导航节点数
     * 返回 格式化后的分页条文本
     **/
    function article_page($style, $count, $pagesize, $page, $barview=0) {
      $page = $page<1 ? 1 : $page;
      $pages = ceil($count/$pagesize);
      $pairs = array(
        '_count'=> $count,
        '_pagesize' => $pagesize,
        '_pages' => $pages,
        '_page' => $page,
        '_first' => 1,
        '_prev' => $page > 1 ? $page - 1 : 1,
        '_next' => $page < $pages ? $page + 1 : $pages,
        '_last' => $pages,
        );
      if(! $barview) return strtr($style, $pairs);
      if(! preg_match("/(<a.+_list.+?a>)/i", $style, $tpl)) return '';
      $tpl = $tpl[1];
      $begin = $page - floor($viewnum/2);
      if($begin < 2) $begin = 2;
      $end = $begin+$barview;
      while($end > $pages) {
        $end--;
        if($begin > 2) $begin--;
      }
      $ret = '';
      for($i=$begin; $i<$end; $i++) {
        $ret .= str_replace('_list', "_$i", $tpl) . ' ';
        $pairs["_$i"] = $i;
      }
      $ch1 = $begin > 2 ? ' ... ' : '';
      $ch2 = $end < $pages ? ' ... ' : '';
      return strtr(str_replace($tpl, $ch1.$ret.$ch2, $style), $pairs);
    }测试例一
    $tpl =<<< HTML
    共 _count 条 每页 _pagesize 条 计 _pages 页
    <a href=?page=_first>第一页</a>
    <a href=?page=_prev>上一页</a>
    <a href=?page=_next>下一页</a>
    <a href=?page=_last>尾一页</a>
    <br>
    HTML;
    echo article_page($tpl, 123, 10, $_GET['page']);测试例二
    $tpl =<<< HTML
    <a href=?page=_prev>上一页</a>
    <a href=?page=_first>1</a>
    <a href=?page=_list>_list</a>
    <a href=?page=_last>_last</a>
    <a href=?page=_next>下一页</a>
    Pages:_page/_pages
    HTML;
    echo article_page($tpl, 123, 10, $_GET['page'], 5);