作者:村头的小路_157 | 来源:互联网 | 2023-05-19 16:59
分页是目前在显示大量结果时所采用的最好的方式。有了下面这些代码的帮助,开发人员可以在多个页面中显示大量的数据。在互联网上,分页是一般用于搜索结果或是浏览全部信息php基本分页&l
分页是目前在显示大量结果时所采用的最好的方式。有了下面这些代码的帮助,开发人员可以在多个页面中显示大量的数据。在互联网上,分页是一般用于搜索结果或是浏览全部信息
php基本分页
$totalpages) {
// set current page to last page
$currentpage = $totalpages;
} // end if
// if current page is less than first page...
if ($currentpage < 1) {
// set current page to first page
$currentpage = 1;
} // end if
// the offset of the list, based on current page
$offset = ($currentpage - 1) * $rowsperpage;
// get the info from the db
$sql = "SELECT id, number FROM numbers LIMIT $offset, $rowsperpage";
$result = mysql_query($sql, $conn) or trigger_error("SQL", E_USER_ERROR);
// while there are rows to be fetched...
while ($list = mysql_fetch_assoc($result)) {
// echo data
echo $list[&#39;id&#39;] . " : " . $list[&#39;number&#39;] . "
";
} // end while
/****** build the pagination links ******/
// range of num links to show
$range = 3;
// if not on page 1, don&#39;t show back links
if ($currentpage > 1) {
// show << link to go back to page 1
echo " << ";
// get previous page num
$prevpage = $currentpage - 1;
// show < link to go back to 1 page
echo " < ";
} // end if
// loop to show links to range of pages around current page
for ($x = ($currentpage - $range); $x < (($currentpage + $range) + 1); $x++) {
// if it&#39;s a valid page number...
if (($x > 0) && ($x <= $totalpages)) {
// if we&#39;re on current page...
if ($x == $currentpage) {
// &#39;highlight&#39; it but don&#39;t make a link
echo " [$x] ";
// if not current page...
} else {
// make it a link
echo " $x ";
} // end else
} // end if
} // end for
// if not on last page, show forward and last page links
if ($currentpage != $totalpages) {
// get next page
$nextpage = $currentpage + 1;
// echo forward link for next page
echo " > ";
// echo forward link for lastpage
echo " >> ";
} // end if
/****** end build pagination links ******/
?>
先看一个常用的php分页类
1) {
$pagination.= "";
//previous button
if ($page > 1) $pagination.= "
previous";
else $pagination.= "
previous";
//pages
if ($lastpage < 7 + ($adjacents * 2)) //not enough pages to bother breaking it up
{
for ($counter = 1; $counter <= $lastpage; $counter++) {
if ($counter == $page) $pagination.= "
$counter";
else $pagination.= "
$counter";
}
} elseif ($lastpage > 5 + ($adjacents * 2)) //enough pages to hide some
{
//close to beginning; only hide later pages
if ($page < 1 + ($adjacents * 2)) {
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++) {
if ($counter == $page) $pagination.= "
$counter";
else $pagination.= "
$counter";
}
$pagination.= "...";
$pagination.= "
$lpm1";
$pagination.= "
$lastpage";
}
//in middle; hide some front and some back
elseif ($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) {
$pagination.= "
1";
$pagination.= "
2";
$pagination.= "...";
for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) {
if ($counter == $page) $pagination.= "
$counter";
else $pagination.= "
$counter";
}
$pagination.= "...";
$pagination.= "
$lpm1";
$pagination.= "
$lastpage";
}
//close to end; only hide early pages
else {
$pagination.= "
1";
$pagination.= "
2";
$pagination.= "...";
for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) {
if ($counter == $page) $pagination.= "
$counter";
else $pagination.= "
$counter";
}
}
}
//next button
if ($page < $counter - 1) $pagination.= "
next ";
else $pagination.= "
next ";
$pagination.= "
n";
}
?>
实例
totalNum = $count; //总记录数
$this->pageSize = $size; //每页大小
$this->pageNo = $pageNo;
//计算总页数
$this->pageCount = ceil($this->totalNum / $this->pageSize);
$this->pageCount = ($this->pageCount <= 0) ? 1 : $this->pageCount;
//检查pageNo
$this->pageNo = $this->pageNo == 0 ? 1 : $this->pageNo;
$this->pageNo = $this->pageNo > $this->pageCount ? $this->pageCount : $this->pageNo;
//计算偏移
$this->offset = ($this->pageNo - 1) * $this->pageSize;
//计算是否有上一页下一页
$this->hasPrePage = $this->pageNo == 1 ? false : true;
$this->hasNextPage = $this->pageNo >= $this->pageCount ? false : true;
$this->pageData = $pageData;
$this->jsFunction = $jsFunction;
}
/**
* 分页算法
* @return
*/
private function generatePageList() {
$pageList = array();
if ($this->pageCount <= 9) {
for ($i = 0; $i < $this->pageCount; $i++) {
array_push($pageList, $i + 1);
}
} else {
if ($this->pageNo <= 4) {
for ($i = 0; $i < 5; $i++) {
array_push($pageList, $i + 1);
}
array_push($pageList, -1);
array_push($pageList, $this->pageCount);
} else if ($this->pageNo > $this->pageCount - 4) {
array_push($pageList, 1);
array_push($pageList, -1);
for ($i = 5; $i > 0; $i--) {
array_push($pageList, $this->pageCount - $i + 1);
}
} else if ($this->pageNo > 4 && $this->pageNo <= $this->pageCount - 4) {
array_push($pageList, 1);
array_push($pageList, -1);
array_push($pageList, $this->pageNo - 2);
array_push($pageList, $this->pageNo - 1);
array_push($pageList, $this->pageNo);
array_push($pageList, $this->pageNo + 1);
array_push($pageList, $this->pageNo + 2);
array_push($pageList, -1);
array_push($pageList, $this->pageCount);
}
}
return $pageList;
}
/***
* 创建分页控件
* @param
* @return String
*/
public function echoPageAsDiv() {
$pageList = $this->generatePageList();
$pageString = "");
return $pageString;
}
}
?>
css代码
在php页面中的调用方法
echoPageAsDiv();
随意转载^^但请附上教程地址。