On Nov 17, A L said:
>1. How can I get to make results from mysql db to be displayed on web
>browser with pagination? Meaning, when there are too many results from
>the db, it only displays 20 results at a time-like that of google-and
>show links to rest of the results by giving page numbers. I've used
>Data::Page module from CPAN, but I can only get it to print out the
>result to the web statically without giving links to other pages and all
>the results are still displayed on one page when there should be 33 pages
>or more (the total pages number changes as more stuff are added to the
>db). Also, DBIx::Pager from CPAN was looked (I'm still working on it to
>work), but it doesn't seem like it is not going to do what I'm expecting.
>Am I looking at the right places? If not, will you tell me what I should
>be looking at?
The way I've done this is:
use DBI;
use CGI 'param';
my $dbh = DBI->connect($dsn, $username, $password, { RaiseError => 1 });
my $offset = param('offset') || 0;
my $limit = 10;
my ($prev, $next) = ($offset - $limit, $offset + $limit);
$prev = 0 if $prev < 0;
my $query = qq{ SELECT * FROM table WHERE f=? LIMIT $offset, $limit };
my $n_query = qq{ SELECT * FROM table WHERE f=? LIMIT $next, 1 };
my $arg = param('arg');
my $sth = $dbh->prepare($query);
$sth->execute($arg);
while (my $rec = $sth->fetchrow_hashref) {
# do stuff with $rec
}
$sth = $dbh->prepare($n_query);
$sth->execute($arg);
# if this is not the FIRST set of records
print qq{<a href="search.cgi?offset=$prev&arg=$arg"><<<</a>}
if $prev != $offset;
# if there are more rows to show after these
print qq{<a href="search.cgi?offset=$next&arg=$arg">>>></a>}
if $sth->rows;
I expect that's more or less what DBIx::Pager does, but I've never used
the module.
--
Jeff "japhy" Pinyan [EMAIL PROTECTED] http://www.pobox.com/~japhy/
RPI Acacia brother #734 http://www.perlmonks.org/ http://www.cpan.org/
<stu> what does y/// stand for? <tenderpuss> why, yansliterate of course.
[ I'm looking for programming work. If you like my work, let me know. ]
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]