Previously,
> [CODE]
<snip>
> <BODY bgcolor='ivory'>
>
> <?php
> //$s = 14; hard coded as a debug statement
> $S= @$_GET['$s'] ;
With the above, PHP is looking for the GET parameter name $s, not the value
of $s as the the GET parameter name. If you want the latter, change it to
$_GET[$s]. IIRC, PHP is not case specific, not like Java and C#.
> Echo "\$s on line 69 is - $s<BR />"; //debug statement
> ?>
<snip>
>
> [/CODE]
On Fri, Feb 4, 2011 at 8:05 AM, Bill Mudry <billmudry@xxxxxxxxxx> wrote:
> At 12:11 AM 04/02/2011, Tommy Pham wrote:
>
> Bill,
>
> That's a lot of reading ... Anyway, this seems to be a 'general' PHP
> question. If I understood you correctly, you're having problem getting
PHP
> to page the SQL results? If so, look the below code logic and adapt as
> necessary:
>
> $numOfResults = 10; // change this to your need
> if( !empty($_GET['page']) && intval($_GET['page']) > 1 ) $currentPage =
> intval($_GET['page']) - 1; // change the $_GET['page'] accordingly
> elseif (!empty($_GET['page']) && strtolower(trim($_GET['page'])) == 'all')
> $currentPage = 'all';
> else $currentPage = 0;
>
> $sqlQuery = 'SELECT * FROM my_table ';
>
> If( $currentPage != 'all' ) $sqlQuery .= ' LIMIT
> '.$currentPage*$numOfResults.', '.$numOfResults; // see [1]
>
> $result = mysql_query($sqlQuery);
>
> Would give you the following:
>
> ?page=all returns all results
> ?page=1 or ?page=0 or ?page= or ? yields 1st batch $numOfResults ( 1 to
10
> )
> ?page=2 yields 2nd batch $numOfResults ( 11 to 20 )
> ?page=3 yields 3rd batch $numOfResults ( 21 to 30 )
> ?page=4 yields 4th batch $numOfResults ( 31 to 40 )
>
> Etc....
>
> Regards,
> Tommy
>
> Perhaps interesting code but when I said including code would help, I was
> referring to
> code for the best way of preserving the record counter, $s, when the
program
> the program
> recycles back on itself on PHP_SELF. As mentioned, at present it does not
> carry forward
> the $s value so it can accumulate with the next page of records and
> therefore gets stuck on
> page one.
>
> Thank you for your effort.
>
> The general code is already there. In fact, if you were to take a closer
> look, it is a fairly
> sophisticated algorithm with a lot of checks and validations. It is also
> very user friendly,
> letting users click on "Next >>" to go ahead one page and "<< Prev" to go
> backward one
> page.
>
I think you're over complicating things. Paging doesn't depend complicated
code algorithm but rather simple math deductions. See the below revised
code.
> My testing shows that it should work well IF the value of the record
counter
> would only
> transfer on restarting the page. I will try using SESSION today to see if
it
> will do the job.
>
> Bill Mudry
> Mississauga
Revised code:
$sqlSearchCount = "SELECT COUNT(*) AS Total FROM species WHERE $searchfield
like \"%$querystring%\" order by '$searchfield'"; /* look into [1] */
$result = mysql_query( $sqlSearchCount );
$totalRows = mysql_fetch_assoc('Total');
$numOfResults = 10;
$maxPages = ceil( $totalRows / $numOfResults );
if( !empty($_GET['page']) )
{
if( strtolower(trim($_GET['page'])) == 'all' )
{
$currentPage = 'all';
}
else {
$currentPage = intval($_GET['page']);
if( $currentPage > $maxPages ) $currentPage = 1;
elseif ( $currentPage > 1 ) $currentPage--;
else $currentPage = 1;
}
}
else $currentPage = 0;
$sqlSearch = "SELECT * FROM species WHERE $searchfield like
\"%$querystring%\" order by '$searchfield'";
if( $currentPage != 'all' ) $sqlSearch .= ' LIMIT
'.($currentPage-1)*$numOfResults.', '.$numOfResults;
$result = mysql_query( $sqlSearch );
/* code to display $result */
if( $currentPage > 1 ) echo '<a href="?page='.$currentPage -
1.'">Previous</a>';
if( $currentPage < $maxPages ) echo '<a href="?page='.$currentPage +
1.'">Next</a>';
if( $totalRows > 0 ) echo 'Showing '.($currentPage - 1)*$numOfResults+1.' to
'.( $currentPage < $maxPages ) ? ( $currentPage )*$numOfResults : $totalRows
.' of total: '.$totalRows;
NOTE: The code is not tested, but rather quickly cranked out based on
logic.
Regards,
Tommy
[1] http://php.net/mysql_escape_string
--
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
[PHP Home]
[PHP Users]
[PHP Install]
[PHP on Windows]
[Programming PHP]
[Kernel Newbies]
[Rice Cooker]
[Home]
[Yosemite News]
[Yosemite Photos]
[PHP Books]