Hi there, I also tend to go with this variant of B. I keep $start_from and $max_results in the session (or the query string). This gives me the options of allowing flexible number of results per page, flexible breadcrumbs for navigating the search results, etc. If it's critical that it's a single table, then the full result set can be slurped into another temporary table (you'd need to implement a gc routine to clean those tables up) and then play with that table.
Granted, I use a few MySQL features for this; I'm not sure if LIMIT exists in postgresql, and I'm fairly sure that the SQL_CALC_FOUND_ROWS directive (which will return the total rows in a select statement regardless of the LIMIT directives) doesn't... Issac > > add b) That sounds the best option at least this is the one I chose the > last time you can do a LIMIT $start, $end (at least in MySQL). A > potential problem in this situation is that the datasource may > have been changed in the meantime ;-)