By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,694 Members | 1,847 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,694 IT Pros & Developers. It's quick & easy.

2 times same query, once with limits

P: n/a
I've a query quite important to execute.

I've to fill an array with all result, so the query is called once wich
returns all ID's

Then I call the same query a second time as I shown only 10 results in my
page.

How can I avoid to call the query twice ?

Bob
Jul 17 '05 #1
Share this Question
Share on Google+
6 Replies


P: n/a
rw
yust save result in session

Bob Bedford wrote:
I've a query quite important to execute.

I've to fill an array with all result, so the query is called once wich
returns all ID's

Then I call the same query a second time as I shown only 10 results in
my page.

How can I avoid to call the query twice ?

Bob


--
Robert Was
Jul 17 '05 #2

P: n/a

"rw" <rw***@gazeta.pl> a écrit dans le message de news:
cs**********@diplo.bci.pl...
yust save result in session


don't really understand what you mean!
should I
$_SESSION['queryresult'] = mysql_result('select...',$mydb); ???

and how to do next and previous then ? I will only know the next and
previous recordid in order to put a next and previous button with param
ID=previousID or ID=nextID

Bob
Jul 17 '05 #3

P: n/a
Bob Bedford wrote:
I've a query quite important to execute.

I've to fill an array with all result, so the query is called once wich
returns all ID's

Then I call the same query a second time as I shown only 10 results in my
page.

How can I avoid to call the query twice ?

Bob


Hi Bob,

you didn't mention if you want to use both results on the same page.
If so:
- Loop over ALL the results once.
- Then loop over the first 10

If you want the results to be available on another page, store them in a
session.

Regards,
Erwin Moller
Jul 17 '05 #4

P: n/a

"Erwin Moller"
<si******************************************@spam yourself.com> a écrit dans
le message de news: 41**********************@news.xs4all.nl...
Bob Bedford wrote:
I've a query quite important to execute.

I've to fill an array with all result, so the query is called once wich
returns all ID's

Then I call the same query a second time as I shown only 10 results in my
page.

How can I avoid to call the query twice ?

Bob


Hi Bob,

you didn't mention if you want to use both results on the same page.
If so:
- Loop over ALL the results once.
- Then loop over the first 10

If you want the results to be available on another page, store them in a
session.

I want 10 results (not necessarely the first 10) in the actual page. In the
other page, I need only 1 result BUT I've to know previous and next record.

Takes this example. I'm in the search page. The result gives 150 results. I
only show 10 results/page.
Now, I click on an element (one of the result). From there I'd like to click
on "next item" or "previous item".
For this I've to know each element of the query's result. But how to do
previous and next ??? now I've executed the query, then I put each element
ID in an array. When I go in element page, I have the array, so clicking on
previous I've the previous ID, clicking on next, I've the next ID. Then I
show the element with the new ID.
The problem is that If I click 12 times on "next", I've to know that
clicking on "return" button (not the previous of the browser), the page has
changed. I should be in page 2 now.
How to fill the array then show only 10 results ? What should I do ?

Bob
Jul 17 '05 #5

P: n/a
Bob Bedford wrote:
"Erwin Moller"
<si******************************************@spam yourself.com> a
écrit dans le message de news:
41**********************@news.xs4all.nl...
Bob Bedford wrote:
I've a query quite important to execute.

I've to fill an array with all result, so the query is called once
wich returns all ID's

Then I call the same query a second time as I shown only 10 results
in my page.

How can I avoid to call the query twice ?

Bob


Hi Bob,

you didn't mention if you want to use both results on the same page.
If so:
- Loop over ALL the results once.
- Then loop over the first 10

If you want the results to be available on another page, store them
in a session.

I want 10 results (not necessarely the first 10) in the actual page.
In the other page, I need only 1 result BUT I've to know previous and
next record.

Takes this example. I'm in the search page. The result gives 150
results. I only show 10 results/page.
Now, I click on an element (one of the result). From there I'd like
to click on "next item" or "previous item".
For this I've to know each element of the query's result. But how to
do previous and next ??? now I've executed the query, then I put each
element ID in an array. When I go in element page, I have the array,
so clicking on previous I've the previous ID, clicking on next, I've
the next ID. Then I show the element with the new ID.
The problem is that If I click 12 times on "next", I've to know that
clicking on "return" button (not the previous of the browser), the
page has changed. I should be in page 2 now.
How to fill the array then show only 10 results ? What should I do ?

Bob


Plenty of examples available from Google.

See this, for example:
http://phpclasses.mirrors.nyphp.org/...kage/2012.html

--
Virgil
Jul 17 '05 #6

P: n/a

"Bob Bedford" <be******@YouKnowWhatToDoHerehotmail.com> wrote in message
news:41**********************@news.sunrise.ch...
I want 10 results (not necessarely the first 10) in the actual page. In the other page, I need only 1 result BUT I've to know previous and next record.
Takes this example. I'm in the search page. The result gives 150 results. I only show 10 results/page.
Now, I click on an element (one of the result). From there I'd like to click on "next item" or "previous item".
For this I've to know each element of the query's result. But how to do
previous and next ??? now I've executed the query, then I put each element
ID in an array. When I go in element page, I have the array, so clicking on previous I've the previous ID, clicking on next, I've the next ID. Then I
show the element with the new ID.
The problem is that If I click 12 times on "next", I've to know that
clicking on "return" button (not the previous of the browser), the page has changed. I should be in page 2 now.
How to fill the array then show only 10 results ? What should I do ?


Hmmm. Tricky. In order to determine what the previous and next item are, you
will need to perform the original query. There's really no way around that.
Storing data in session variable is always rather dicey in these kinds of
scenarios.

What I would do is in the URL to the element page, put in the variables that
we'd need to reconstruct the search query, the id of the element, and the
position of that element within the result set. In the element page itself,
perform the same query, but use a window of 3--one ahead of the position of
the element and one behind. To make sure that the position of the element
within the result set hasn't since changed, compare the id of the middle row
to the one from the URL. If they don't match, retrieve the entire data set
to look for the correct 3 rows. For the "prev" and "next" links, go the same
thing.

The drawback is that running the query is slower than getting the data of
the element using a primary key. On the other hand, because you're running
the same query over and over, the database server should be smart enough to
cache that data set.
Jul 17 '05 #7

This discussion thread is closed

Replies have been disabled for this discussion.