first time i have asked for help on a forum for a very long time. Normally find what i need by viewing other posts... Well i'm really confused so need help.
I am trying to use theme('pager')
in Drupal 7 to have pagination for my table results i get from a db_select
query.
The below query produces an error when i include the line:
$output .= theme('pager');
If i leave this line out i get the expected limited 5 results from my table.
My code:
// Set external databse
db_set_active('nondrupal');
// build query to get desired results
$query = db_select('diary', 'n')
->fields('n', array('photo_id', 'photo'))
->orderBy('photo_id', 'DESC');
//Create a new object from extend. The reason for this is that extend() creates a
new object which wraps the current object (Decorator pattern).
$query = $query->extend('PagerDefault')->limit(5);
// Execute query and add to array
$result = $query->execute();
// empty output var
$output = NULL;
// Loop through results and output each row for chosen columns
foreach($result as $row) {
$output .= $row->photo_id.': '.$row->photo.'<br />';
}
// Show pagination in output
$output .= theme('pager');
// echo output to screen
echo $output;
// Set db connection back to default (drupal)
db_set_active();
The page renders fine without the theme('pager')
line.
With it i get an error:
Additional uncaught exception thrown while handling exception.
Original
PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table
'dbMYDATABASENAME.semaphore' doesn't exist: SELECT expire,
value FROM {semaphore} WHERE name = :name; Array ( [:name] =>
theme_registry:runtime:garland:cache ) in lock_may_be_available() (line 167
of /homepages/28/d228752694/htdocs/drupal7/includes/lock.inc).
Base table or view not found seems to be the key but i cannot see why including the theme function causes this error. I have a basic Drupal 7 install.
Your help is appreciated!
Madmilner
$output .= theme('pager');
below thedb_set_active();
? Also, you could make a view for this pretty easily.