SYNOPSIS<pagelinks [options]>
DESCRIPTION
The pagelinks
function automatically paginates the results of
a SQL search, printing the necessary HTML and links for previous/next
buttons etc. It eliminates the tedious code needed to compute
SKIP
values and loop over numbered-page links.
The values of $rows.min
and $rows.max
(here) are used to compute the necessary page
link information. Thus, pagelinks
can be called after the
SQL
loop ends, or at the very first row (though possibly with a
different accuracy, if the true row count is not known yet).
When called with no options, pagelinks
prints out an "X
through Y of Z documents" summary, previous- and next-page links, and
numbered page-by-page links in a default format. In order to compute
these links, the associated <SQL>
statement's SKIP
and
MAX
must be known, so that skips and page sizes can be set
properly. Thus pagelinks
automatically uses the last
<SQL>
statement's SKIP
var and MAX
value. To ensure that the links
work properly, it is the programmer's responsibility to EXPORT
the necessary variables for the original search, such as the
SKIP
variable and any <SQL>
query parameters.
Since pagination design varies widely by application,
pagelinks
has a number of options to fully control output
formatting, as well as defaults for use in simple "quick and dirty"
pagination:
SKIPVAR
The SKIP
variable used by the SQL
query. This is
not simply the SKIP
value, but the variable name
itself: not only is the current SKIP
value obtained from
it, but this variable will be set to the correct SKIP
value
when each link is printed. It is thus assumed that this variable
is URL EXPORT
ed as well. The default is the SKIP
variable named in the last <SQL>
statement (in versions
after Dec. 16 1999); if not given, skip
is assumed.NUMROWS
Normally pagelinks
will use $rows.max
to get the
maximum total rows the query will return and thus compute how many
links to create. If that number is known to be inaccurate, or a
different limit is to be forced, the NUMROWS
option can be
set to the total number of rows to assume the query will return,
overriding $rows.max
. (Note: to just control the number of
page links produced without affecting the "X through Y of Z
documents" numbers, use MAXPGS
.)PGSZ
The number of rows per page. This should correspond to the
SQL
loop's MAX
value; in versions after Dec. 16 1999
PGSZ
therefore defaults to that value. Otherwise it
defaults to 10.MAXPGS
The maximum number of page links to call the PGFUNC
callback for; the default is 10. This is useful to avoid printing
links for thousands of potential pages for a noisy query.SUMFUNC
The name of the function to call to print the "X through Y of Z
documents" summary. The default is sumfunc
; if that
function does not exist, a default summary will be printed. The
SUMFUNC
function has several parameters initialized when
called, as described below.PREVFUNC
The name of the function to call to print the previous-page button
link. The default is prevfunc
; if that does not exist a
default previous-page link will be printed. See below for
parameters.NEXTFUNC
The name of the function to call to print the next-page button
link. The default is nextfunc
; if that does not exist a
default next-page link will be printed. See below for parameters.PGFUNC
The name of the function to call to print the numbered-page links.
This is called once for each page in the projected result set, up
to MAXPGS
pages. The default is pgfunc
; if that
does not exist a default set of page links will be printed. See
below for parameters.ORDER
The order in which to call the summary, previous, next, and page
link callbacks. Its value is a comma-separated list of the
strings "sum
", "prev
", "next
", and/or
"page
". The default is "sum,prev,page,next
":
print the summary first, then the previous-page link, then the
page links, then the next-page link. If a callback is not listed
it will not be called.URLEND
The additional function and MIME extension to add to URLs. This
only applies to URLs printed by the builtin callbacks: if a script
callback is used the programmer just prints the complete URL as
needed. Normally, the builtin callbacks print URLs as
$url/$urlfunc$urlext$urlq
(with the original values of
$urlfunc
and $urlext
), so that they will have the
same start function as the current invocation. If the links are
to enter elsewhere (but the same builtin callbacks are desired),
URLEND
can be set to a replacement for
/$urlfunc$urlext
, e.g. /search.html
. URLEND
was added in version 3.0.945400000 19991216.
The SUMFUNC
, PREVFUNC
, NEXTFUNC
and PGFUNC
callback functions will have the following parameters set each time
they are called. Note that not all parameters are set for all
callbacks:
startrow
The first row of the current page's results, counting from 1 as
$next
does.endrow
The ending row of the current page's results, counting from 1.numrows
The total number of rows the query will return
(i.e. $rows.max
or the NUMROWS
value).pg
The page number (counting from 1) that this callback is to print a
link for (for PGFUNC
). This is not necessarily the current
page.curpg
The page number of the currently displayed page. The
PGFUNC
callback uses this as it iterates through pages: if
$pg
is equal to $curpg
, then a link isn't generated
because that's the current page. (The default callback bolds this
number instead of making it a link.)numpgs
The total number of pages, counting from 1, in the entire result set.pgsz
The number of rows per page, derived from PGSZ
or its default.valid
Only set for the PREVFUNC
and NEXTFUNC
callbacks,
this is nonzero if the link is "valid", i.e. based on the current
page whether a previous or next link is valid. There's no
previous page for the first page, and no next page for the last
page. Thus the default callback doesn't print a previous/next
link when this is 0.prev
Only set for the PREVFUNC
and NEXTFUNC
callbacks,
this is nonzero if the callback is PREVFUNC
and zero for
NEXTFUNC
. Provides a way to combine the previous- and
next-page callbacks into one function if desired.
In addition to these parameters, the parameter named by
SKIPVAR
(or its default) will be set to the proper SKIP
value for the link being generated. Thus the variable should be
EXPORT
ed to the URL for the skip to take effect on links.