Page 1 of 1

Search Page pagination trouble

Posted: Wed Mar 18, 2009 4:59 am
by Radagast
Hi, I have this code, but the pagination doenst work, I've been working on this for ages and cant figure out what the problem is. I'v posted on some other web forums but they didnt help so now Im desperate, so Im posting all of the code with the webpage url, I wouldnt normally do this but Im totally stuck.

What happens is when you click the 'next' button it just refreshes the page but doesnt go to the next set of results, someone on FB suggested it had something to do with the $s variable but I'm a real beginner and struggling as to what to do

Im dyslexic so I find code quite dificalt but Im not gonna let it stop me, so please be kind.

Anyway, my page is here http://www.abherbz.com/test/search.php

Here is my code:

Code: Select all

 
<form name="form" action="<?php echo $PHP_SELF; ?>" method="get">
<input name="q" type="text" value="" />
<input type="submit" name="Search" id="Search" value="Search" />
</form>
<?php
 
// Get the search variable from URL
$var = @$_GET['q'] ;
$trimmed = trim($var); //trim whitespace from the stored variable
 
// rows to return
$limit=10;
 
// check for an empty string and display a message.
if ($trimmed == "")
{
echo "<p>Please enter a search...</p>";
exit;
}
 
// check for a search parameter
if (!isset($var))
{
echo "<p>We dont seem to have a search parameter!</p>";
exit;
}
 
 
 
//specify database ** EDIT REQUIRED HERE **
mysql_select_db($database_abherbzCon) or die("Unable to select database"); //select which database we're using
 
// Build SQL Query
$query = "select * from herbs where herbName like \"%$trimmed%\" OR herbLatinName like \"%$trimmed%\"
order by herbName"; // EDIT HERE and specify your table and field names for the SQL query
 
$numresults=mysql_query($query);
$numrows=mysql_num_rows($numresults);
 
// If we have no results, offer a google search as an alternative
 
if ($numrows == 0)
{
echo "<p>Sorry, your search: "" . $trimmed . "" returned zero results</p>";
 
// google
echo "<p><a href=\"http://www.google.com/search?q="
. $trimmed . "\" target=\"_blank\" title=\"Look up
" . $trimmed . " on Google\">Click here</a> to try the
search on google</p>";
}
 
// next determine if s has been passed to script, if not use 0
if (empty($s)) {
$s=0;
}
 
// get results
$query .= " limit $s,$limit";
$result = mysql_query($query) or die("Couldn't execute query");
 
// display what the person searched for
echo "<b>Herb results for: " " . $var . "</b> " <br /><br />";
 
// begin to show results set
 
$count = 1 + $s ;
 
// now you can display the results returned
while ($row= mysql_fetch_array($result)) {
$herbName = $row["herbName"];
$herbLatinName = $row["herbLatinName"];
$herbId = $row["id"];
 
 
print "";
 
echo "$count.)&nbsp;$title" ; // counts records looks a bit <span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>
 
print "<a href=\"herbz.php?herbId=" . $herbId . "\" style=\"text-transform:capitalize;\" >" . $herbName . " - " . $herbLatinName . "</a> <br />" ;
 
$count++ ;
}
 
$currPage = (($s/$limit) + 1);
 
//break before paging
echo "<br />";
 
// next we need to do the links to other results
if ($s>=1) { // bypass PREV link if s is 0
$prevs=($s-$limit);
print "&nbsp;<a href=\"$PHP_SELF?s=$prevs&q=$var\"><<
Prev 10</a>&nbsp&nbsp;";
}
 
// calculate number of pages needing links
$pages=intval($numrows/$limit);
 
// $pages now contains int of pages needed unless there is a remainder from division
 
if ($numrows%$limit) {
// has remainder so add one page
$pages++;
}
 
// check to see if last page
if (!((($s+$limit)/$limit)==$pages) && $pages!=1) {
 
// not last page so give NEXT link
$news=$s+$limit;
 
echo "<a href=\"$PHP_SELF?s=$news&q=$var\">Next 10 >></a>";
}
 
$a = $s + ($limit) ;
if ($a > $numrows) { $a = $numrows ; }
$b = $s + 1 ;
echo "<p>Showing results $b to $a of $numrows</p>";
 
?>
 
Many thanks for any help

Re: Search Page pagination trouble

Posted: Wed Mar 18, 2009 5:32 am
by temidayo
Give us a term that is 'searchable' on your site.
I mean a search term that will produce result.

May I suggest that you 'print' or 'echo' your $query before the statement:

Code: Select all

 
$numresults=mysql_query($query);
 

Re: Search Page pagination trouble

Posted: Fri Mar 20, 2009 6:23 am
by Radagast
Hi, thanks

I get this message when I search for 'a' :

select * from herbs where herbName like "%a%" OR herbLatinName like "%a%" order by herbName
Herb results for: " a "


Thanks, how would this help? and sorry for not knowing very much PHP, Im trying

Re: Search Page pagination trouble

Posted: Fri Mar 20, 2009 9:54 am
by temidayo
Radagast wrote: Thanks, how would this help? and sorry for not knowing very much PHP, Im trying
I'm trying to determine if the correct query was being executed.

For the pagination to work, there must be LIMIT x, y at the end of the query.
Where x, y are integer numbers.

The variable $s and $limit were suppose to be your x and y respectively. But the problem is
you are not getting $s from anywhere in the code ( as far as I can see).

Put 'print' or 'echo' your $query after building the query on the SQL statement line 60 to confirm this:

Code: Select all

// get results
 $query .= " limit $s,$limit";
echo 'query : '.$query;
 $result = mysql_query($query) or die("Couldn't execute query");
 
To solve the problem put this code at the beginning of your script:

Code: Select all

 
$s = $_GET['s'];
 

Re: Search Page pagination trouble

Posted: Sat Mar 21, 2009 4:25 am
by Radagast
thanks, temidayo YOU STAR!!!!!
IT works, I put $s = $_GET['s']; at the begining and it worked!!!

thank you so much!
xxx

Re: Search Page pagination trouble

Posted: Mon Mar 23, 2009 1:37 am
by temidayo
I feel flattered :D I'm glad it works.
You are welcome.