On Tue, May 04, 2004 at 02:37:50PM -0700, Chris W. Parker wrote:
>
> > I don't follow what "$_GET record count from initial query performed
> > above;" is for, but that's the basic methodology.
>
> well that just meant that after the initial count of records is found it
> will be retrieved from the querystring instead of through a select
> statement (because it had already been performed once before).
I never bother with getting the initial record count. Unless you want
to display the total number of available pages, of course (in the vein
of Google search result set).
If all you need is to include "Previous" and "Next" buttons in the right
places, you could simply go with:
$length=40; // or whatever
if ($_GET['offset'])
$offset=$_GET['offset']);
else
$offset=0;
// do the query
$q="SELECT colums FROM table WHERE yadda LIMIT $offset," . 1+$length;
$r=mysql_query($q);
// make Prev/Next links as required
if ($offset > 0)
$prev="<a href='?offset=" . $offset-$length . "'>";
else
$prev="";
if (mysql_num_rows($r) > $length)
$next="<a href='?offset=" . $offset+$length . "'>";
else
$next="";
// show the head
print " <td align=left>$prev</td>\n";
print " <td align=left>$next</td>\n";
print "</tr><tr>\n";
// show the page
for ($i=0; $i<$length; $i++) {
$row=mysql_fetch_array($r);
print $row['blah']; // wrapped in stuff, of course
}
The idea here is that we always try to SELECT one more entry than we can
display on the page. If mysql_num_rows() sees that many rows, then
there's a page after the current one. And of course, if $offset is > 0
then there's a page before the current one.
I find that this method simplifies my code. I don't need to store the
result of a COUNT() in a session variable, so the "count" remains
valid even if the number of records changes while someone's browsing.
Note that this is not safe code as is. :) At the very least, you
should format-check $_GET['offset'] before using it for anything.
p
--
Paul Chvostek <[EMAIL PROTECTED]>
it.canada http://www.it.ca/
Free PHP web hosting! http://www.it.ca/web/
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php