function chado_pager_query
2.x tripal_core.chado_query.api.inc | chado_pager_query($query, $args, $limit, $element, $count_query = '') |
3.x tripal_chado.query.api.inc | chado_pager_query($query, |
1.x tripal_core_chado.api.inc | chado_pager_query($query, $limit, $element, $count_query) |
Use this function instead of pager_query() when selecting a subset of records from a Chado table.
@returns A database query result resource or FALSE if the query was not executed correctly
Parameters
$query: The SQL statement to execute, this is followed by a variable number of args used as substitution values in the SQL statement.
$args: The array of arguments for the query. They keys are the placeholders
$limit: The number of query results to display per page.
$element: An numeric identifier used to distinguish between multiple pagers on one page.
$count_query: An SQL query used to count matching records.
Related topics
2 calls to chado_pager_query()
- chado_select_record in tripal_chado/
api/ tripal_chado.query.api.inc - Provides a generic routine for selecting data from a Chado table.
- tripal_chado_vocab_get_terms in tripal_chado/
includes/ tripal_chado.vocab_storage.inc - Implements hook_vocab_get_terms().
File
- tripal_chado/
api/ tripal_chado.query.api.inc, line 1801 - Provides an API for querying of chado including inserting, updating, deleting and selecting from chado.
Code
function chado_pager_query($query, $args, $limit, $element, $count_query = '') {
// Get the page and offset for the pager.
$page_arg = isset($_GET['page']) ? $_GET['page'] : '0';
$pages = explode(',', $page_arg);
$page = 0;
if (count($pages) >= $element) {
$page = key_exists($element, $pages) ? $pages[$element] : 0;
}
$offset = $limit * $page;
$q = $_GET['q'];
// Construct a count query if none was given.
if (!isset($count_query)) {
$count_query = preg_replace(array('/SELECT.*?FROM /As', '/ORDER BY .*/'),
array('SELECT COUNT(*) FROM ', ''), $query);
}
// We calculate the total of pages as ceil(items / limit).
$results = chado_query($count_query, $args);
if (!$results) {
tripal_report_error('tripal_chado', TRIPAL_ERROR,
"chado_pager_query(): Query failed: %cq", array('%cq' => $count_query));
return;
}
$total_records = $results->fetchField();
// Set a session variable for storing the total number of records.
$GLOBALS['chado_pager'][$q][$element]['total_records'] = $total_records;
pager_default_initialize($total_records, $limit, $element);
$query .= ' LIMIT ' . (int) $limit . ' OFFSET ' . (int) $offset;
$results = chado_query($query, $args);
return $results;
}