And now mysql4 allows doing this another way, I *assume* this new way is slightly faster then the additional count() although I haven't tested it and wonder if it affects mysql_num_rows()...
See: SQL_CALC_FOUND_ROWS() http://www.mysql.com/doc/en/Miscellaneous_functions.html Regards, Philip Olson On Wed, 18 Dec 2002, liljim wrote: > 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 > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php