/**
* PDO Database Wrapper of PEAR Pager
*
* @param resource $db The PDO object
* @param string $query SQL Statement
* @param array $pager_options Options of pager
* @param boolean $disabled Whether use pager,true will use ,or not use
* @param int $fetchMode
*/
function Pager_Wrapper_PDO(&$db, $query, $pager_options = array(), $disabled = false, $fetchMode = PDO::FETCH_ASSOC){
if (!array_key_exists('totalItems', $pager_options)) {
if ($countQuery = rewriteCountQuery($query)) {
$stmt = $db->prepare($countQuery);
$stmt->execute();
$totalItems = $stmt->fetchColumn();
}else{
$stmt = $db->prepare($query);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_COLUMN);
$totalItems = count($rows);
}
$pager_options['totalItems'] = $totalItems;
}
require_once 'Pager/Pager.php';
$pager = Pager::factory($pager_options);
$page = array();
$page['links'] = $pager->links;
$page['totalItems'] = $pager_options['totalItems'];
$page['page_numbers'] = array(
'current' => $pager->getCurrentPageID(),
'total' => $pager->numPages()
);
list($page['from'], $page['to']) = $pager->getOffsetByPageId();
$page['limit'] = $page['to'] - $page['from'] +1;
// fix offset
// limit 1,10 can not retrive the first record of result set.
$page['from'] = $page['from'] - 1;
if (!$disabled) {
$query .= 'LIMIT ' . $page['from'] . ', ' . $pager_options['perPage'];
}
// var_dump($query);
$stmt = $db->prepare($query);
$stmt->execute();
$page['data'] = $stmt->fetchAll($fetchMode);
if ($disabled) {
$page['links'] = '';
$page['page_numbers'] = array(
'current' => 1,
'total' => 1
);
}
// var_dump($pager);
return $page;
}
* PDO Database Wrapper of PEAR Pager
*
* @param resource $db The PDO object
* @param string $query SQL Statement
* @param array $pager_options Options of pager
* @param boolean $disabled Whether use pager,true will use ,or not use
* @param int $fetchMode
*/
function Pager_Wrapper_PDO(&$db, $query, $pager_options = array(), $disabled = false, $fetchMode = PDO::FETCH_ASSOC){
if (!array_key_exists('totalItems', $pager_options)) {
if ($countQuery = rewriteCountQuery($query)) {
$stmt = $db->prepare($countQuery);
$stmt->execute();
$totalItems = $stmt->fetchColumn();
}else{
$stmt = $db->prepare($query);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_COLUMN);
$totalItems = count($rows);
}
$pager_options['totalItems'] = $totalItems;
}
require_once 'Pager/Pager.php';
$pager = Pager::factory($pager_options);
$page = array();
$page['links'] = $pager->links;
$page['totalItems'] = $pager_options['totalItems'];
$page['page_numbers'] = array(
'current' => $pager->getCurrentPageID(),
'total' => $pager->numPages()
);
list($page['from'], $page['to']) = $pager->getOffsetByPageId();
$page['limit'] = $page['to'] - $page['from'] +1;
// fix offset
// limit 1,10 can not retrive the first record of result set.
$page['from'] = $page['from'] - 1;
if (!$disabled) {
$query .= 'LIMIT ' . $page['from'] . ', ' . $pager_options['perPage'];
}
// var_dump($query);
$stmt = $db->prepare($query);
$stmt->execute();
$page['data'] = $stmt->fetchAll($fetchMode);
if ($disabled) {
$page['links'] = '';
$page['page_numbers'] = array(
'current' => 1,
'total' => 1
);
}
// var_dump($pager);
return $page;
}