Home >Backend Development >PHP Tutorial > 请问:关于分页的有关问题

请问:关于分页的有关问题

WBOY
WBOYOriginal
2016-06-13 13:35:25932browse

请教:关于分页的问题!
大家好,我是新手,我做了一个PHP分页,基本效果已经实现了,我想让当前页的颜色与其它页颜色不同,应该怎么实现?我想了好几天实在搞不定啊!还有假如以后我的页数多了,如何隐藏页数? 并且怎样让当前页居中显示???请知道的高手,帮忙指点下!

  inclued("conn.php"); //连接数据库
  //分页
  $pagesize=10; //设置一页显示条数
  
  $qw=mysql_query("select count(*) from `blog`");
  $we=mysql_fetch_array($qw);
  $er=$we[0]; //得出数据库表总数
  
  $pages=intval($er/$pagesize); //得出页数
  if($er%$pagesize){
  $pages++;
  }
  
  //设置当前页
  if(isset($_GET['page'])){  
  $page=intval($_GET['page']);
  }else{
  $page=1;
  }
  
  $offset=$pagesize*($page - 1); //计算起始条数
  $sql="select * from `blog` order by id desc limit $offset,$pagesize";
  $query=mysql_query($sql);
  
  while($rs=mysql_fetch_array($query)){
  

?>



...


阅读全文>>



}
?>

  //显示分页
  $shouye=1;
  $shangye=$page-1;
  $xiaye=$page+1;
  $weiye=$pages;
  if($page>1){
  echo " 第一页 ";
  echo " 上一页 ";
  }
  //循环页数
  for($i=1;$i   echo " ".$i." ";
}

  if($page   echo " 下一页 ";
  echo " 最后一页 ";
  }
?>

------解决方案--------------------
不错,hoho

主要改动这里

//循环页数
for($i=1;$i echo " ".$i." ";
}

这个循环,$i从max($page-X, 1)开始,到min($page+X, $pages)结束,如果页数足够,2*X+1就是显示总页数【不包括前、后、第一、最后】

$i === $page,说明是当前页
------解决方案--------------------
PHP code

/**
 * 设置分页样式
 *
 * @access  public
 * @param   integer     $showNumCount   显示几个数字(例如:1 2 3 ...)
 * @param   integer     $totalPage      数据的总页数
 * @param   integer     $page           当前页数
 *
 * @return  array       $pageNumList    页数(数字)列表
 */
function showNumber($showNumCount, $totalPage, $page)
{
    $showNumCount = $totalPage >= $showNumCount ? $showNumCount : $totalPage;
    if($totalPage > $showNumCount && $page > ceil($showNumCount / 2))
    {
        if($totalPage - $page > floor($showNumCount / 2))
        {
            $pageNumList = array_slice(range(1, $totalPage), $page - floor($showNumCount / 2) - 1, $showNumCount);
        }
        else
        {
            $pageNumList = range($totalPage - $showNumCount + 1, $totalPage - $showNumCount + $showNumCount);
        }
    }
    else
    {
        $showNumCount = $showNumCount ? $showNumCount : 1;
        $pageNumList = range(1, $showNumCount);
    }
    return $pageNumList;
}




$showNumCount   = 10;   // 显示十个页码
$totalPage      = 100;  // 假如一共有100页数据
$currentPage    = 9;    // 假如当前选择的是第9页

$pageNumList = showNumber($showNumCount, $totalPage, $currentPage);


/*
接下来你只需要在html中循环输出这些页码,加上连接即可,当然了,如果标识当前页的话,你可以类似这样

{foreach from=$pageNumList item=page}
    <a href="...?page=%7B%24page%7D" style="font-color: red">{$page}</a>
{/foreach}
*/ <div class="clear">
                 
              
              
        
            </div>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn