Re: Imposing a range on what is stored in a session variable
| From: | Shawn McKenzie | Date: | Mon, 27 Jul 2009 15:25:16 +0000 |
| Subject: | Re: Imposing a range on what is stored in a session variable | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-295888@lists.php.net to get a copy of this message | ||
Miller, Terion wrote:
>
>
> On 7/27/09 9:40 AM, "Jim Lucas" <lists@cmsws.com> wrote:
>
> Miller, Terion wrote:
>> I want to store only 1000 records at a time in the session variable thought I could use a
>> range(1,1000....
>>
>> How would you do this, store the first 1000 , then the second on refresh etc
>>
>> My snippet so far
>>
>> -----------------------
>> // Process all results into $_SESSION array
>> $position = 1;
>> while ($row = mysql_fetch_array($result))
>> {
>> $_SESSION['fullRestaurantList'][$position] = $row;
>> $position++;
>> foreach(range('1','1000') as $c){
>> ($position == $c)
>>
>> $_SESSION['totalNumberOfRestaurants'] = $c; }
>>
>> }
>>
>
> Use the mysql function for this called LIMIT. It LIMITs the amount of
> data returned.
>
> SELECT * FROM table_name LIMIT 1000
>
> 1. it will make your SQL calls much faster
> 2. it will use less memory
>
>
>
>
> But that limits results right, if a query generated more then 1000 records how would a user be
> able to access 1001 ..put the query in a loop?
Bastien gave you all the info:
You should look at paging the data here with the OFFSET portion of the
limit clause
Select * from restaurant [where clause]limit 1000, $offset
where the $offset value can tell you where to start in the 17K rows of
data so that in effect you show records 1-1000, 1001-2000,
2001-3000...then on the page, just provide a set of links of navigate
the recordset by the user [ << < 1-1000 1001-2000 2001-3000 > >> ]
***
So you would generate page that had the first 1000 records and a Next >
link that linked maybe to the same page with ?start=1001. Then use the
$_GET['start'] to generate the next set of results staring at 1001.
--
Thanks!
-Shawn
http://www.spidean.com