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