on 8/11/03 1:31 PM, Ângelo Marcos Rigo at angelo_rigo@xxxxxxxxxxxx wrote: > I have this script (please adapt the section where the > results are showed) Thank you very much - I've implemented this on one of my results pages as a test, and it seems to be partially working - the results are limited properly, and there are no errors, but the next and previous links aren't quite working right. On the first page, the prev link points to offset 0 and page 1, which I guess is correct, but the next link leaves offset blank, and has page 0, instead of having offset 50 (that's what I set $limit to) and page 2 as I would think it should. If I enter those values manually in the URL - http://www.gallery44.org/db/artists_browse_paged.php?offset=50&pgnum=2 - the second page displays correctly, but again the prev and next links don't work right. The prev page here shows pgnum=1, which is correct, but it shows offset as 30 when it should be 50. And the next link shows exactly what it did on page 1 - offset=&pgnum=0. I've looked at the code, but I don't think I'm following it well enough to be sure what's going wrong. I've attached a copy of the file I kept the code pretty much as it was except for the part where the results are displayed, and a couple of very minor tweaks (changed the pg_query and pg_num_rows to pg_exec and pg_numrows because I'm using PHP 4.1, changed the part where it selects the whole table and uses pg_numrows to count it to a select count because it seemed more efficient, and changed $conn to the database connection I'd already opened, $db). If you or anyone else could suggest what might be going wrong, I'd very much appreciate it. Here's what I've got: First part (before displaying query results): // Paging script - request for parameters. $offset = $_REQUEST['offset']; $pgnum = $_REQUEST['pgnum']; // Make that they are integer - security. settype($offset, 'integer'); settype($pgnum, 'integer'); // Open database, i.e PostgreSQL if (!$db) { echo "An error occured - no database connection exists.\n"; exit; } // Initialize variables. $limit=50; // rows to return $numresults=pg_exec("SELECT COUNT(*) FROM artists"); //PostgreSQL // $numrows=pg_numrows($numresults); // next determine if offset has been passed to script, if not use 0 if (empty($offset)) { $offset=0; $pgnum=1; } Then comes the display of the results, which is working fine. Second part: // calculate number of pages needing links $pages=intval($numrows/$limit); // $pages now contains int of pages needed unless there is a remainder from division if ($numrows%$limit) { // has remainder so add one page $pages++; } echo "\n<p class=\"small\">"; // next we need to do the links to other results if (pages!=1) { if ($pgnum==1) { print "<a href=\"$PHP_SELF?offset=0&pgnum=1\">PREV</a> \n"; } else { $prevoffset=$offset-20; $cpgnum = intval($prevoffset/$limit)+1; print "<a href=\"$PHP_SELF?offset=$prevoffset&pgnum=$cpgnum\">PREV</a> \n"; } } for ($i=1;$i<=$pages;$i++) { // loop thru $newoffset=$limit*($i-1); $cpgnum = $i; print "<a href=\"$PHP_SELF?offset=$newoffset&pgnum=$cpgnum\">$cpgnum</a> \n"; } // check to see if last page if ($pages!=1) { if ($pgnum<$pages) { $newoffset=$offset+$limit; $cpgnum = intval(($offset+$limit)/$limit)+1; print "<a href=\"$PHP_SELF?offset=$newoffset&pgnum=$cpgnum\">NEXT</a></p>\n"; } else { print "<a href=\"$PHP_SELF?offset=$newoffset&pgnum=$pages\">NEXT</a></p>\n"; } } Many thanks, Lynna -- Resource Centre Database Coordinator Gallery 44 www.gallery44.org