PHP分页

php

浏览数:334

2019-1-8

// 后台分页
function multi_url($num, $perpage, $curpage, $mpurl) {
    $page      = 5;   // 需要显示的分页数量
    $multipage = '
'; // 拆分url地址 $param = parse_url($mpurl); // 得到一维关联数组,键path=>地址 键query=>参数 if (isset($param['query']) && '' != $param['query']) { // 将参数转换为一维数组 parse_str():将字符串解析成多个变量, // 即将字符串解析多个变量存入数组$parse里面 parse_str($param['query'], $parse); // 删除数组$parse里面下标为page的数据 unset($parse['page']); if ($parse) { // 删除数组$parse下标为page的数据后,如果数组不为空,则说明存在下标为keyword的数据 // 将转换为$parse的数组重新转换为对应的字符串 $qurl = http_build_query($parse); $mpurl = $param['path'] . '?' . $qurl . '&'; } else { // 否则,说明数组$parse没有下标为keyword的数据,即没有其他参数了 $mpurl = $param['path'] . '?'; } } else { $mpurl = $param['path'] . '?'; } $offset = 2; $totalpage = @ceil($num / $perpage); if ($page > $totalpage) { $from = 1; $to = $totalpage; } else { // 2 3 4 5 6 $curpage=4 $from=2 $to=2+5-1=6 $from = $curpage - $offset; $to = $from + $page - 1; if ($from < 1) { // 1 2 3 4 5 $curpage =2 $from=1 $to=1+5-1=5 $from = 1; $to = $from + $page - 1; } elseif ($to > $totalpage) { // 4 5 6 7 8 $curpage=8 $to=8 $from=8-5+1=4 $from = $totalpage - $page + 1; $to = $totalpage; } } $prevpage = $curpage - 1; $nextpage = $curpage + 1; if ($curpage <=1) { $multipage .= '首页'; $multipage .= '上一页'; } else { $multipage .= '首页'; $multipage .= '上一页'; } for ($i = $from; $i <= $to; $i++) { if ($i == $curpage) { $multipage .= '' . $i . ''; } else { $multipage .= ''.$i.''; } } if ($curpage >= $totalpage) { $multipage .= '下一页'; $multipage .= '末页'; } else { $multipage .= '下一页'; $multipage .= '末页'; } $multipage .='每页'.$perpage.'条数据 | 总共'.$num.'条数据'; $multipage .= '
'; return $multipage; } // 分页--跳转 function multi($num, $perpage, $curpage, $mpurl) { $page = 5; // 需要显示的分页数量 $multipage = '
    '; // 拆分url地址 $param = parse_url($mpurl); // 得到一维关联数组,键path=>地址 键query=>参数 if (isset($param['query']) && '' != $param['query']) { // 将参数转换为一维数组 parse_str():将字符串解析成多个变量, // 即将字符串解析多个变量存入数组$parse里面 parse_str($param['query'], $parse); // 删除数组$parse里面下标为page的数据 unset($parse['page']); if ($parse) { // 删除数组$parse下标为page的数据后,如果数组不为空,则说明存在下标为keyword的数据 // 将转换为$parse的数组重新转换为对应的字符串 $qurl = http_build_query($parse); $mpurl = $param['path'] . '?' . $qurl . '&'; } else { // 否则,说明数组$parse没有下标为keyword的数据,即没有其他参数了 $mpurl = $param['path'] . '?'; } } else { $mpurl = $param['path'] . '?'; } $offset = 2; $totalpage = @ceil($num / $perpage); if ($page > $totalpage) { $from = 1; $to = $totalpage; } else { // 2 3 4 5 6 $curpage=4 $from=2 $to=2+5-1=6 $from = $curpage - $offset; $to = $from + $page - 1; if ($from < 1) { // 1 2 3 4 5 $curpage =2 $from=1 $to=1+5-1=5 $from = 1; $to = $from + $page - 1; } elseif ($to > $totalpage) { // 4 5 6 7 8 $curpage=8 $to=8 $from=8-5+1=4 $from = $totalpage - $page + 1; $to = $totalpage; } } $prevpage = $curpage - 1; $nextpage = $curpage + 1; if ($curpage <=1) { $multipage .= '
  • 首页
  • '; $multipage .= '
  • ‹‹
  • '; } else { $multipage .= '
  • 首页
  • '; $multipage .= '
  • 上一页
  • '; } for ($i = $from; $i <= $to; $i++) { if ($i == $curpage) { $multipage .= '
  • ' . $i . '
  • '; } else { $multipage .= '
  • '.$i.'
  • '; } } if ($curpage >= $totalpage) { $multipage .= '
  • '; $multipage .= '
  • '; } else { $multipage .= '
  • '; $multipage .= '
  • '; } $multipage .= '每页'.$perpage.'条数据 | 总共'.$num.'条数据'; $multipage .='页'; $multipage .=''; $multipage .='
'; $multipage .=''; return $multipage; }