Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

How do they do that?

by NodeReaper (Curate)
on Mar 27, 2002 at 23:17 UTC ( [id://154844]=perlquestion: print w/replies, xml ) Need Help??

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

Replies are listed 'Best First'.
Re: How do they do that?
by Maclir (Curate) on Mar 27, 2002 at 23:48 UTC
    Well, I don't know how individual programmers who implemented the various search engines would do it, but, having implemented similar functions before, this is the way I would approach it.
    1. Assume your search process uses a database. The person posing the search provides the search terms, and your program formulates a SQL query based on those terms. One option in SQL is the "COUNT" option, which returns the number of records in the database matching the query. This number would be placed in the "number of matches" part of the page.
    2. To control pagination, (how many records to display on each page), you have a program variable, say $records_per_page that is either a constant value (everyone sees 20 records per page), or user configurable. You then need to keep track of what "page" you are about to show. and for each page you will display from record ($page_number - 1) * $records_per_page. SQL fetch nexts can be used to get successive records.
    3. Finally, since we are talking web pages here (are we?), you need to preserve state between sessions. There is lots of information on this site (and others) on how to do that.
(cLive ;-) Re: How do they do that?
by cLive ;-) (Prior) on Mar 27, 2002 at 23:50 UTC
    Sounds like you need to read up on SQL

    .02

    cLive ;-)

    --
    seek(JOB,$$LA,0);

Re: How do they do that?
by zengargoyle (Deacon) on Mar 28, 2002 at 00:09 UTC
    mysql> select count(document_id) from document; +--------------------+ | count(document_id) | +--------------------+ | 36 | +--------------------+ 1 row in set (0.13 sec) mysql> select document_id from document; +-------------+ | document_id | +-------------+ | 31 | | 32 | | 36 | | 37 | | 38 | | 39 | | 40 | | 41 | | 42 | | 43 | | 44 | | 45 | | 46 | | 53 | | 54 | | 55 | | 56 | | 57 | | 58 | | 59 | | 60 | | 61 | | 62 | | 101 | | 102 | | 244 | | 245 | | 283 | | 284 | | 296 | | 297 | | 305 | | 306 | | 310 | | 318 | | 319 | +-------------+ 36 rows in set (0.01 sec) mysql> select document_id from document where document_id < 60; +-------------+ | document_id | +-------------+ | 31 | | 32 | | 36 | | 37 | | 38 | | 39 | | 40 | | 41 | | 42 | | 43 | | 44 | | 45 | | 46 | | 53 | | 54 | | 55 | | 56 | | 57 | | 58 | | 59 | +-------------+ 20 rows in set (0.00 sec) mysql> select document_id from document where document_id < 60 limit 0 +,4; +-------------+ | document_id | +-------------+ | 31 | | 32 | | 36 | | 37 | +-------------+ 4 rows in set (0.00 sec) mysql> select document_id from document where document_id < 60 limit 4 +,4; +-------------+ | document_id | +-------------+ | 38 | | 39 | | 40 | | 41 | +-------------+ 4 rows in set (0.00 sec) mysql> select document_id from document where document_id < 60 limit 8 +,4; +-------------+ | document_id | +-------------+ | 42 | | 43 | | 44 | | 45 | +-------------+ 4 rows in set (0.00 sec) mysql> select document_id from document where document_id < 60 limit 1 +2,4; +-------------+ | document_id | +-------------+ | 46 | | 53 | | 54 | | 55 | +-------------+ 4 rows in set (0.00 sec) mysql> select document_id from document where document_id < 60 limit 1 +6,4; +-------------+ | document_id | +-------------+ | 56 | | 57 | | 58 | | 59 | +-------------+ 4 rows in set (0.00 sec) mysql> select document_id from document where document_id < 60 limit 2 +0,4; Empty set (0.00 sec)

    So... if $pagenum starts at 0, that's 'limit $pagenum*$maxperpage, $maxperpage'

    Your SQL may vary.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://154844]
Approved by root
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others studying the Monastery: (5)
As of 2024-03-28 16:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found