> -----Original Message-----
> From: ctan [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, July 25, 2002 11:24 AM
> To: [EMAIL PROTECTED]
> Subject: [PHP] 'Previous' 1, 2, 3, 4, etc. 'Next'
>
>
> I seem to have a problem getting the page to display beyond
> the limit if a
> page, i.e. if the limit if 10 rows in a page I'll only get
> the 1st ten rows
> and then a link to further rows but when I chick on them they give me
> nothing. Here's the code:
>
>
> $searchword = $_POST['searchword'];
> print "Your word(s) is/are: <b>$searchword</b><p>\n\n";
>
> // Searching by keyword
> if (! empty($searchword )){
> $max = 0;
> $query = "SELECT aml FROM arguments WHERE aml LIKE
> '%$searchword%'";
> $result1 = mysql_query($query)
> or die ("Query failed");
>
> // Determine the number of items containing the $searchword
> while ($line1 = mysql_fetch_array($result1)){
> $max++;
> }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This could just be:
$max = mysql_num_rows($result1);
---------------------------------------------------
>
>
> // The number of results to be displayed on screen
> $maxresult = 10;
>
> $sql_text = "SELECT aml FROM arguments WHERE aml LIKE
> '%$searchword%'";
>
> // When the current page is yet to be determined
> if (!$page) {
> $page = 1;
> }
^^^^^^^^^^^^^^^^^^^^^^^
Do you have register_globals on or should you be setting
$page = $_GET['page'] here?
--------------------------------------------------------
>
> $backpage = $page - 1;
> $nextpage = $page + 1;
> $result2 = mysql_query($sql_text);
> $start = ($maxresult * $page) - $maxresult;
> $num_rows = mysql_num_rows($result2);
>
> // When the query returns less or equal number of rows than
> the limit set by
> $maxresult
> if ($num_rows <= $maxresult) {
> $num_pages = 1;
> }
>
> // When the query returns the exact limit set by $maxresult
> else if (($num_rows % $maxresult) == 0) {
> $num_pages = ($num_rows / $maxresult);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
You could simplify this here with
$num_pages = ceil(($num_rows / $maxresult));
And get rid of the else below
----------------------------------------------
> }
>
> // For any other cases...
> else {
> $num_pages = ($num_rows / $maxresult) + 1;
> }
>
> // Declared as an integer
> $num_pages = (int) $num_pages;
>
> // The current page is greater than the total number of pages or
> // the current page is less than 0
> if (($page > $num_pages) || ($page < 0)) {
> error("You have specified an invalid page number");
> }
>
> // Set the limit per page
> $sql_text = $sql_text . " LIMIT $start, $maxresult";
> $result2 = mysql_query($sql_text);
>
> // The navigation between pages
> // Ensure only display when total number of return results exceeds
> $maxresult
> // i.e. will not display if only 1 page
> if ($max>$maxresult){
> print "<center>- ";
> if ($backpage) {
> print "<a
> href=\"$PHP_SELF?searchword=$searchword&page=$backpage\">Prev</a>";
> }
>
> // If its the first page; have 'Prev' un-clickable
> else {
> print "Prev";
> }
>
> for ($i = 1; $i <= $num_pages; $i++) {
> if ($i != $page) {
>
> print " <a
> href=\"$PHP_SELF?searchword=$searchword&page=$i\">$i</a> ";
> }
> else {
> print " $i ";
> }
> }
>
> if ($page != $num_pages) {
> print "<a
> href=\"$PHP_SELF?searchword=$searchword&page=$nextpage\">Next</a> -";
> }
> else {
> print "Next -";
> }
> print "</center>";
> }
>
> print "<table border=\"1\"><th BGCOLOR=\"#ff0000\">Results</th>";
> while ($line = mysql_fetch_array($result2, MYSQL_ASSOC)) {
> print "\t<tr BGCOLOR=\"#000080\">\n";
> // The different color, in this case
> light blue will
> show that
> // the particular table belong to search by
> keywords
> foreach ($line as$col_value) {
> print
> "\t\t<td>$col_value</td>\n";
> }
> print "\t</tr>\n";
> }
>
>
> }
>
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php