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