On Wed, 19 Sep 2007 10:23:58 -0400, "Dan Shirah" <[EMAIL PROTECTED]>
wrote:
> Becase I am using MSSQL not MYSQL. MSSQL does not have anything easy to
> use
> like LIMIT in MYSQL. So, to achieve the same functionality you have to
use
> the subqueries.
>
> Having the largest number as the inner most subquery value tells the
query
> to retrieve the records that are equal to that number minus 10(my results
> per page)
>
> So, if the inner most query has has a value of 30, the outer query will
> select records 21-30.
>
> And, it does this just fine because if I echo out my variables I see the
> numbers changing. But for whatever reason, the data being displayed is
not
> changing.
>
>
> On 9/19/07, T. Lensselink <[EMAIL PROTECTED]> wrote:
>>
>> On Wed, 19 Sep 2007 10:05:40 -0400, "Dan Shirah" <[EMAIL PROTECTED]>
>> wrote:
>> > Hello all,
>> >
>> > I am having a problem with trying to display a set amount of records
>> from
>> > my
>> > result.
>> > I have verified that the correct values for my variables are being
>> passed
>> > to
>> > the query.
>> > The calculation for the records that should be displayed per page is
>> > correct.
>> > The total number of records returned from my query is correct.
>> > And the calculated number of total pages to be displayed is correct.
>> >
>> > So, initially it displays the first 10 results as it should, and has
> the
>> > pages numbers at the bottom. The problem is, when I click on a
>> different
>> > page number the same 10 results are ALWAYS displayed. Even though my
>> > $page
>> > variable IS being updated.
>> >
>> > Any ideas why my results are not reflecting the page I select?
>> >
>> >
>> > <?php
>> > if(!isset($_GET['page'])){
>> > $page = 1;
>> > } else {
>> > $page = $_GET['page'];
>> > }
>> > // Define the number of results per page
>> > $max_results = 10;
>> > // Figure out the limit for the query based
>> > // on the current page number.
>> > $from = (($page * $max_results) - $max_results);
>> > echo $from."FROM";
>> > $page_results = $max_results + $from;
>> > echo $page_results."PAGE RESULTS";
>> > // Query the table and load all of the records into an array.
>> > $sql = "SELECT DISTINCT * FROM (
>> > SELECT TOP $max_results Value1, Value2 FROM (
>> > SELECT TOP $page_results Value1,
>> > FROM my_table
>> > WHERE my_table.column = 'P'
>> > ) as newtbl order by credit_card_id desc
>> > ) as newtbl2 order by credit_card_id asc";
>> >
>> > print_r ($sql);
>> > $result = mssql_query($sql) or die(mssql_error());
>> > //print_r ($result);
>> > $number_rows = mssql_num_rows($result);
>> > ?>
>> > <table width='780' border='1' align='center' cellpadding='2'
>> > cellspacing='2'
>> > bordercolor='#000000'>
>> > <?php
>> > if(!empty($result)) {
>> > while ($row = mssql_fetch_array($result)) {
>> > $id = $row['credit_card_id'];
>> > $dateTime = $row['date_request_received'];
>> > //print_r ($id_child);
>> > ?>
>> > <tr>
>> > <td width='88' height='13' align='center' class='tblcell'><div
>> > align='center'><?php echo "<a
> href='javascript:editRecord($id)'>$id</a>"
>> > ?></div></td>
>> > <td width='224' height='13' align='center' class='tblcell'><div
>> > align='center'><?php echo "$dateTime" ?></div></td>
>> > <td width='156' height='13' align='center' class='tblcell'><div
>> > align='center'><?php echo "To Be Processed" ?></div></td>
>> > <td width='156' height='13' align='center' class='tblcell'><div
>> > align='center'><?php echo "Last Processed By" ?></div></td>
>> > </tr>
>> > <?php
>> > }
>> > }
>> > ?>
>> > </table>
>> > <table align="center" width="780" cellpadding="2" cellspacing="2"
>> > border="0">
>> > <tr>
>> > <td width='780' height='15' align='center' class='tblcell'><div
>> > align='center'><strong>Results: </strong><?php echo "$number_rows";
>> > ?></div></td>
>> > </tr>
>> > </table>
>> > <?php
>> > // Figure out the total number of results in DB:
>> > $sql_total= "SELECT * FROM my_table WHERE my_table.column = 'P'";
>> > $tot_result = mssql_query($sql_total) or die(mssql_error());
>> > $total_results = mssql_num_rows($tot_result) or die(mssql_error());
>> > // Figure out the total number of pages. Always round up using ceil()
>> > $total_pages = ceil($total_results / $max_results);
>> > echo $max_results."Results";
>> > echo $total_results."Total";
>> > echo $total_pages."pages";
>> > // Build Page Number Hyperlinks
>> > echo "<center>Select a Page<br />";
>> > // Build Previous Link
>> > if($page > 1){
>> > $prev = ($page - 1);
>> > echo "<a
> href=\"".$_SERVER['PHP_SELF']."?page=$prev\"><<Previous</a>
>> > ";
>> > }
>> >
>> > for($i = 1; $i <= $total_pages; $i++){
>> > if(($page) == $i){
>> > echo "$i ";
>> > } else {
>> > echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$i\">$i</a>
> ";
>> > }
>> > }
>> > // Build Next Link
>> > if($page < $total_pages){
>> > $next = ($page + 1);
>> > echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$next\">Next>></a>";
>> > }
>> > echo "</center>";
>> > ?>
>>
>> I think it returns the same 10 records because of TOP $max_results.
>> This will always get the first 10 records. Probably better to use LIMIT.
>>
>> Why are there so much subqueries needed to get the result set?
>> Why not something like this:
>>
>> SELECT DISTINCT * FROM my_table WHERE my_table.column = 'p' ORDER BY
>> credit_card_id DESC LIMIT $page_results, $max_results
>>
Dan,
Thanx for the explenation. I should have asked what DB you are using.
So if you wanna select rows from 10 to 20 with a limit of 10 the query will
be
something like this?
SELECT DISTINCT * FROM (
SELECT TOP 10 Value1, Value2 FROM (
SELECT TOP 20 Value1,
FROM my_table
WHERE my_table.column = 'P'
) as newtbl order by credit_card_id desc
) as newtbl2 order by credit_card_id asc
If you watch at the output of print_r($result) you get different results
for every page?
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php