The aim of our case study is to show how to display large result sets in pages. Each page should be able to be displayed efficiently and viewed without using the web browser's vertical scroll bar. We also aim to make the component intuitive to use, allow direct access to any page in the results, and allow pages to be navigated using previous and next hypertext links.
We develop the module step-by-step. We begin by developing support for multiple results pages, and the previous and next links. Later in this section, we add functionality to display page numbers as links that permit direct access to a chosen page. The output of the final version of the module when it is used to browse winestore regions is shown in Figure 5-8.
Figure 5-8. A generic page browsing tool with previous and next links
In this section, as a generic page-based browser is developed, we retire the special-purpose
displayWinesList( ) function completed in Example 5-6. It's replaced with a new, generic, multipurpose function
browse( ). However, before we discuss how this is done, we describe what we need to achieve.
The following features are required when a user browses the wines in a region:
Only one page of wineries is shown at a time. When the user runs the query, only the first 20 rows of results are shown.
As in Figure 5-8, an embedded Next link displays that allows the user to move to the next page of rows. If the user is accessing the first page, the Next link runs a query that shows the second page of results; that is, rows 21 to 40.
When the user reaches the last page of results-which usually has less than 20 rows-the Next link is hidden.
An embedded Previous link is shown that moves backward through the pages.
The Previous link is hidden when the first page is displayed.
This can be further improved by adding page numbers to each page that allow direct access to other pages without repeatedly clicking on the previous or next links. We discuss this functionality later in this section.