4번독수리의 둥지

generating pagination in PHP 본문

PHP

generating pagination in PHP

4번독수리 2016. 2. 22. 10:58

<?php
// pseudo database table
$contents = range(1, 255);
rsort($contents);
//print_r($contents);

 

$now = $_GET['now'];
if (!$now) {
 $now = 1;
}

 

// pseudo pagination object
$p = array();
$p['types'] = array('simple', 'centered');
// set pagination config
$p['size'] = 7;
$p['psize'] = 5;
$p['type'] = 'simple';
// pagination preset info
$p['now'] = $now;
$p['total'] = count($contents);
// generate pagination info
$p['ptotal'] = ceil($p['total'] / $p['size']);
$p['offset'] = ($p['now'] - 1) * $p['size'];
if ($p['type'] == 'simple') {
  $p['chunk'] = ceil($p['now'] / $p['psize']);
  $p['first'] = ($p['chunk'] - 1) * $p['psize'] + 1;
  $p['last'] = $p['chunk'] * $p['psize'] > $p['ptotal'] ? $p['ptotal'] : $p['chunk'] * $p['psize'];
  $p['list'] = range($p['first'], $p['last']);
  $p['pfirst'] = $p['chunk'] == 1 ? null : 1;
  $p['plast'] = $p['last'] == $p['ptotal'] ? null : $p['ptotal'];
  $p['pprev'] = $p['chunk'] == 1 ? null : ($p['chunk'] - 2) * $p['psize'] + 1;
  $p['pnext'] = $p['last'] == $p['ptotal'] ? null : $p['last'] + 1;
}
// return pagination info
$p['r'] = array(
  'now' => $p['now'],
  'size' => $p['size'],
  'offset' => $p['offset'],
  'list' => $p['list'],
  'pprev' => $p['pprev'],
  'pnext' => $p['pnext'],
  'pfirst' => $p['pfirst'],
  'plast' => $p['plast']
);
//echo '<pre>', print_r($p, true), '</pre>';

 

// view logic

 

// print content list of current page by pagination info
// pseudo sql select LIMIT offset, size
$list = array_slice($contents, $p['r']['offset'], $p['r']['size']);
print_r($list);

 

// print pagination
if ($p['r']['pfirst']) {
  echo "<a href='?now={$p['r']['pfirst']}'> << </a>";
}
if ($p['r']['pprev']) {
  echo "<a href='?now={$p['r']['pprev']}'> < </a>";
}
foreach ($p['r']['list'] as $l) {
  if ($l == $p['r']['now']) {
    echo "<b>{$l}</b>";
  } else {
    echo "<a href='?now={$l}'> {$l} </a>";
  }
}
if ($p['r']['pnext']) {
  echo "<a href='?now={$p['r']['pnext']}'> > </a>";
}
if ($p['r']['plast']) {
  echo "<a href='?now={$p['r']['plast']}'> >> </a>";
}

'PHP' 카테고리의 다른 글

PHP define  (0) 2015.12.08
All PHP functions have the global scope  (0) 2015.12.03
PHP memory management  (0) 2015.11.30
Downgrading a PECL Module  (0) 2015.11.02
check max get parameter length with PHP+cURL  (0) 2015.10.20