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++;
         }      


// 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;
         } 
    
$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);
   } 

// 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";
}


}


I suspect the problem is because I set the limits to a page and thus
anything more is ignored. That particular area of code is highlighted in
red. Could anyone please tell me where I have gone wrong and how I can fix
this. Thank you loads in advance. Incidentally this will be use php script
to conduct search of a database, whereby the user inputs a 'searchword' to
look for in a HTML form and the php script which processes the form input. 

Chia

Reply via email to