On 6/24/07, Shawn Hinchy <[EMAIL PROTECTED]> wrote:
Quoting Tyler Gee <[EMAIL PROTECTED]>: > On 6/24/07, Shawn Hinchy <[EMAIL PROTECTED]> wrote: >> >> Hello all, >> >> I am getting to the point where I need to start thinking about doing >> pagination for search results. >> >> I did some searches and it looks like there are some pagination >> modules, but I am not quite interested in going that route yet. I am >> using a handful of columns from the search so I do not think that >> retrieving all results and then only showing a subset will be very >> efficient. It also looks like you can execute FOUND_ROWS() after >> doing your initial query and it will give you the total results. This >> is probably the best route, but it is not easily implemented with the >> way I have set up my functions. >> >> Are there any other options that I have missed? Suggestions? > > > If you are not interested in using the modules, it is not actually that hard > to roll your own. In the past I have done different things for total > counts, either two separate queries, one just a 'SELECT COUNT(*)' and the > other to actually fetch the data. Depending on your data you might be able > to add the count into your data fetching query but probably not. > > Why do you not want to use the modules? Thank you Tyler, I hadn't though about just using select COUNT(*). I was shying away from using the modules because I knew that it wasn't too hard and I was afraid that I wouldn't find one that would do exactly what i wanted. Then there is the concern that my needs will change in the future and I'll have to find and re-implement another module instead of just tweaking my own code. Or maybe I just like to go through the pain on my own. :) I think two separate queries will work fine for me now, I just didn't want to have to load all the results for fear it would be a memory hog and slow things down since searches will be frequent.
One thing people sometimes do if they have a lot of rows (a whole lot) is to actually keep a separate table that stores the count and then you can just select from that. It is not recommended unless you really have a lot of rows because it de-normalizes the database. The count() should work fine however. Cheers, Thanks,
Shawn -------------------- Shawn Michael Hinchy [EMAIL PROTECTED] -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/
-- ~Tyler