<% my $conf = new FS::Conf; my $maxrecords = $conf->config('maxsearchrecordsperpage'); my $limit = ''; $limit .= "LIMIT $maxrecords" if $maxrecords; my $offset = $cgi->param('offset') || 0; $limit .= " OFFSET $offset" if $offset; my $total; my $sql = $cgi->param('sql'); $sql =~ s/^\s*SELECT//i; my $count_sql = $sql; $count_sql =~ s/^(.*)\s+FROM\s/COUNT(*) FROM /i; my $sth = dbh->prepare("SELECT $count_sql") or eidiot dbh->errstr. " doing $count_sql\n"; $sth->execute or eidiot "Error executing \"$count_sql\": ". $sth->errstr; $total = $sth->fetchrow_arrayref->[0]; my $sth = dbh->prepare("SELECT $sql $limit") or eidiot dbh->errstr. " doing $sql\n"; $sth->execute or eidiot "Error executing \"$sql\": ". $sth->errstr; my $rows = $sth->fetchall_arrayref; %> <% #begin pager my $pager = ''; if ( $total != scalar(@$rows) && $maxrecords ) { unless ( $offset == 0 ) { $cgi->param('offset', $offset - $maxrecords); $pager .= 'Previous '; } my $poff; my $page; for ( $poff = 0; $poff < $total; $poff += $maxrecords ) { $page++; if ( $offset == $poff ) { $pager .= qq!$page !; } else { $cgi->param('offset', $poff); $pager .= qq!$page !; } } unless ( $offset + $maxrecords > $total ) { $cgi->param('offset', $offset + $maxrecords); $pager .= 'Next '; } } #end pager print header('Query Results', menubar('Main Menu'=>$p) ). "$total total rows

$pager". table(). ""; print "$_" foreach @{$sth->{NAME}}; print ""; foreach $row ( @$rows ) { print ""; print "$_" foreach @$row; print ""; } print "$pager"; %>