PHP 分頁 Ajax 分頁

function pages($sql, $pagedir, $page = 1, $count, $pagesize = 10) {
global $adb;

$pagecode = '';

$page = intval($page);
$count = intval($count);

if (!$count)
return '';

$pagecount = ceil($count / $pagesize);

if ($page < 1)
$page = 1;
if ($page > $pagecount)
$page = $pagecount;

$pageStart = $pagesize * ( $page - 1 );
$pageEnd = $pagesize * $page;

$page_end = ( $pageEnd > $count ) ? $count : $pageEnd;

if (!empty($count))
$startIndex = $pageStart + 1;
else
$startIndex = 0;

$para_page = 'page';
$pagecode = '';
$pagecode .= "<a href=\"$pagedir&$para_page=1\"><img src=\"../../themes/Sugar/images/start.png\" align=\"absmiddle\" border=\"0\" alt=\"Start\" /></a>";
if ($page > 1)
$PreviousPage = $page - 1;
else
$PreviousPage = 1;
$pagecode .= "<a href=\"$pagedir&$para_page=$PreviousPage\"><img src=\"../../themes/Sugar/images/previous.png\" align=\"absmiddle\" border=\"0\" alt=\"Previous\" /></a>";
$pagecode .= "<span class=\"pageNumbers\">( $startIndex - $page_end of $count)</span>";
if ($page < $pagecount)
$NextPage = $page + 1;
else
$NextPage = $pagecount;
$pagecode .= "<a href=\"$pagedir&$para_page=$NextPage\"><img src=\"../../themes/Sugar/images/next.png\" align=\"absmiddle\" border=\"0\" alt=\"Next\" /></a>";
$pagecode .= "<a href=\"$pagedir&$para_page=$pagecount\"><img src=\"../../themes/Sugar/images/end.png\" align=\"absmiddle\" border=\"0\" alt=\"End\" /></a>  ";

$result = array();
$sql .= " LIMIT $pageStart, $pagesize";
$result = $adb->GetArray($sql);
return array('pagecode' => $pagecode, 'result' => $result, 'pagecount' => $pagecount);
}

function ajax_pages($sql, $search_data = array(), $page = 1, $pagesize = 10) {
global $adb;

$pagecode = '';

$page = intval($page);

$count = $adb->GetOne("SELECT count(1) FROM ( $sql ) t");

if (empty($count))
return array();

$pagecount = ceil($count / $pagesize);

if ($page < 1)
$page = 1;
if ($page > $pagecount)
$page = $pagecount;

$pageStart = $pagesize * ( $page - 1 );
$pageEnd = $pagesize * $page;

$page_end = ( $pageEnd > $count ) ? $count : $pageEnd;

if (!empty($count))
$startIndex = $pageStart + 1;
else
$startIndex = 0;

$para_page = 'page';
$pagecode = '';

$pagecode .= "<a href='javascript:ajax_page(1, " . json_encode($search_data) . ")'>
<img src=\"../../themes/Sugar/images/start.png\" align=\"absmiddle\" border=\"0\" alt=\"Start\" />
</a>";

if ($page > 1)
$PreviousPage = $page - 1;
else
$PreviousPage = 1;
$pagecode .= "<a href='javascript:ajax_page($PreviousPage, " . json_encode($search_data) . ")'>
<img src=\"../../themes/Sugar/images/previous.png\" align=\"absmiddle\" border=\"0\" alt=\"Previous\" />
</a>";

$pagecode .= "<span class=\"pageNumbers\">( $startIndex - $page_end of $count)</span>";

if ($page < $pagecount)
$NextPage = $page + 1;
else
$NextPage = $pagecount;

$pagecode .= "<a href='javascript:ajax_page($NextPage, " . json_encode($search_data) . ")'>
<img src=\"../../themes/Sugar/images/next.png\" align=\"absmiddle\" border=\"0\" alt=\"Next\" />
</a>";
$pagecode .= "<a href='javascript:ajax_page($pagecount, " . json_encode($search_data) . ")'>
<img src=\"../../themes/Sugar/images/end.png\" align=\"absmiddle\" border=\"0\" alt=\"End\" />
</a>  ";

$result = array();
$sql .= " LIMIT $pageStart, $pagesize";
$result = $adb->GetArray($sql);
return array('pagecode' => $pagecode, 'result' => $result, 'pagecount' => $pagecount);
}

function ajax_pages2($sql, $search_data = array(), $page = 1, $pagesize = 10, $pagelen = 10) {
global $adb;
$pagecode = ''; //定義變量,存放分頁生成的HTML
$page = intval($page); //避免非數字頁碼
$count = $adb->GetOne("SELECT count(1) FROM ( $sql ) t");

if (!$count)
return array(); //總記錄數爲零返回空數組

$pagecount = ceil($count / $pagesize); //計算總分頁
//處理頁碼合法性
if ($page < 1)
$page = 1;
if ($page > $pagecount)
$page = $pagecount;
//計算查詢偏移量
$offset = $pagesize * ($page - 1);
//頁碼範圍計算
$init = 1; //起始頁碼數
$max = $pagecount; //結束頁碼數
$pagelen = ($pagelen % 2) ? $pagelen : $pagelen + 1; //頁碼個數
$pageoffset = ($pagelen - 1) / 2; //頁碼個數左右偏移量

$pagecode .= "<span>$page/$pagecount</span>"; //第幾頁,共幾頁
if ($page != 1) {
$pagecode .= "<span>
<a href='javascript:ajax_page(" . ($page - 1) . ", " . json_encode($search_data) . ")'>Previous</a>
</span>"; //上一頁
}
//分頁數大於頁碼個數時能夠偏移
if ($pagecount > $pagelen) {
//若是當前頁小於等於左偏移
if ($page <= $pageoffset) {
$init = 1;
$max = $pagelen;
} else {//若是當前頁大於左偏移
//若是當前頁碼右偏移超出最大分頁數
if ($page + $pageoffset >= $pagecount + 1) {
$init = $pagecount - $pagelen + 1;
} else {
//左右偏移都存在時的計算
$init = $page - $pageoffset;
$max = $page + $pageoffset;
}
}
}
//生成html
for ($i = $init; $i <= $max; $i++) {
if ($i == $page) {
$pagecode.="<span>$i</span>";
} else {
$pagecode.="<span><a href='javascript:ajax_page($i, " . json_encode($search_data) . ")'>$i</a></span>";
}
}

if ($page != $pagecount) {
$pagecode.="<span><a href='javascript:ajax_page(" . ($page + 1) . ", " . json_encode($search_data) . ")'>Next</a></span>"; //下一頁
}
$sql = $sql . ' LIMIT ' . $offset . ',' . $pagesize;
$result = $adb->GetArray($sql);
if (empty($result)) {
return false;
}
return array('pagecode' => $pagecode, 'result' => $result);
}
相關文章
相關標籤/搜索