perleager has asked for the wisdom of the Perl Monks concerning the following question:

Hey,

I have a MySQL table, and only want it to return 5 results max. If there are more then 5 results I want links to go see the next 5 results / previous 5 results. I'm not sure how to do this and wonder if anyone could help me out. Either a MySQL code way or using perl to do this. 5. b
6. a
7. h
8. h
9. h
next - previous
(http://blah.com/blah.pl?resultmax=5&action=prevfive&start=5)

Something sort of like that I would say?

Thank you,
Tony

Replies are listed 'Best First'.
Re: MySQL and Perl DBI
by blokhead (Monsignor) on Sep 25, 2003 at 06:44 UTC
    MySQL can do 90% of the work for you. Select statments can take a LIMIT clause. In MySQL, LIMIT 0,5 will return rows 1-5 matching the query, LIMIT 10,5 returns rows 11-15, etc. Check the docs or your favorite MySQL book for more information about the syntax.

    All your Perl script really needs to do is calculate/keep track of the record offsets and generate the appropriate prev/next links from the offsets. Incidentally, you may want to look at DBIx::RecordSet, which does all of the above for you automatically (and more, it would seem). I've never used it so I can't vouch for it personally, but it's always worth a try.

    Update: It seems the part of DBIx::RecordSet that you want to take a good look at is the PrevNextForm method.

    blokhead

Re: MySQL and Perl DBI
by Zaxo (Archbishop) on Sep 25, 2003 at 06:46 UTC

    See the MySQL docs under the SELECT statement. You'll find the ORDER BY and LIMIT offset, rows clauses give what you want. You can keep track of position with a cgi parameter.

    After Compline,
    Zaxo