I would also tend to do a count(*) as well as the main query if I intend to
use pagination (with the help of LIMIT in the main query).

Suppose, for example, you're limiting to 30 news posts per page, and from
calculations there are only 2 pages that fall into the criteria, then trying
to bring the result set back on page 3 when it doesn't "exist" will result
in a warning. Also, you'll want to know how many pages of the news post
there are...

Brief Example (assuming $page has already been validated as an integer):

$num = 30; // per page
$total = 49; // result from count(*)
$total_pages = ceil($total/$num);
if($page > $total_pages)
{
    $page = $total_pages;
}

// Main query.
// "select [whatever] from [table(s)] where [criteria] [whateverelse] limit
" . (($page*$num)-$num) . ",$num;

James

"Philip Olson" <[EMAIL PROTECTED]> wrote in message
Pine.BSF.4.10.10212181637090.4483-100000@localhost">news:Pine.BSF.4.10.10212181637090.4483-100000@localhost...
>
> First, there is no reason to do mycounter like this
> when mysql_num_rows() will work perfectly.  It's not
> based on any certain column numbers or primary keys.
> Although if you're suggesting this method to simply
> print 0-n in the loop (as users may want to know the
> row number of output not any id number) then that's
> good altough it's not really a counter in this case.
>
> Second, we assume this person wants a count for
> informational purposes, to go along with the
> data in which case mysql_num_rows() is your best
> bet.  It means having a count before the data is
> printed/used.  And checking the number or rows
> returned before fetching is a form of error handling
> as well as if it equals 0 than there is no data to
> fetch.  But if one ONLY wants a number of rows count,
> doing SELECT count(*)... works great as suggested
> below.
>
>
> Regards,
> Philip Olson
>
>
> On Wed, 18 Dec 2002, liljim wrote:
>
> > Hi John,
> >
> > "John Taylor-Johnston"  wrote in message:
> > > I use $mycounter, not saying it is pretty. But if you have a whole
bunch
> > of stuff deleted, your last id might be worth a lot more than the actual
> > number of rows.
> > >
> > > $myconnection = mysql_connect($server,$user,$pass);
> > > mysql_select_db($db,$myconnection);
> > >
> > > $news = mysql_query('select * from '.$table.' where '.$where.' order
by id
> > asc');
> > >  $mycounter = 0;
> > >  while ($mydata = mysql_fetch_object($news))
> > >  {
> > >   $mycounter++;
> > >  }
> >
> > Have you ever considered just doing a count()?
> >
> > $count = @mysql_query("select count(*) from [table(s)] where [criteria
> > [group by something]]");
> > $total = mysql_result($count, 0);
> >
> > That will return the number of rows in your table(s). It's also much
quicker
> > and less resource intensive, particularly with large datasets. :)
> >
> > James
> >
> >
> >
> > --
> > PHP General Mailing List (http://www.php.net/)
> > To unsubscribe, visit: http://www.php.net/unsub.php
> >
>



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to