in reply to HTML Pager

You should include the $offset and $rows variables as limits in the SQL query, which means you have to execute the query inside the callback, and retrieve the data from the DB inside the callback as well.

And then you just return \@results - that's it.

Replies are listed 'Best First'.
Re^2: HTML Pager
by JimJx (Beadle) on Aug 22, 2007 at 12:36 UTC
    I am not sure that I understand what you mean by "inside the callback"

    Could you elaborate or give an example?

      In your code you write a subroutine that HTML::Pager calls to get the data, and this is called a "callback function".

      In your example it is this:

      # create a callback subroutine to generate the data to be paged my $get_data_sub = sub { my ($offset, $rows) = @_; my @return_array; for (my $x = 0; $x < $rows; $x++) { push(@return_array, [ $row ]); } return \@return_array; }

      Now this is just the stub function frrm the example in the documentation. You don't want that to return a few numbers here, but real data from your database.

      So you have to change your callback function:

      my $get_data_sub = sub { my ($offset, $rows) = @_; my @return_array; # Prepare SQL query: my $sth = $dbi->prepare("Your SQL here that fetches the data from + $offset to $offset+$rows"); $sth->execute($offset, $rows); while (my $array_ref = $sth->fetchrow_arrayref){ push @return_array, $array_ref; } return \@return_array; }

      The only thing that's left for you now is to figure out your SQL (a small hint: use placeholders as explained in the DBI documentation).

      Can you name the callback? Its  get_data_callback => $get_data_sub