Hi there,
I'm having some trouble with pagination, or mainly, the SQL query string that i'm using to get the results.
When I use the normal query string...
$data_p = mysql_query("SELECT * from user WHERE sex = '$sex1' AND location = '$location1' $q $max ") or die(mysql_error());
The first page of results are showing correctly, but the second page and so on are not..
If I take out the variables in the string, and just enter static data like so...
$data_p = mysql_query("SELECT * from user WHERE sex = 'Male' AND location = 'Avon' $q $max ") or die(mysql_error());
Then all of the pages appear correctly (!?)
Any idea what I could be doing wrong??
Here is the code in it's entirity, but the problem is definitely with the string above....
$sex1 = $_REQUEST['sex'];
$age1 = $_REQUEST['age'];
$location1 = $_REQUEST['location'];
$interests1 = $_REQUEST['interests'];
$bang = explode(' ',$interests1);
foreach ($bang as $word){
$q .=" AND Interests LIKE '%$word%' ";
}
// Connects to your Database
include_once('code/main.php');
//This checks to see if there is a page number. If not, it will set it to page 1
if (!(isset($pagenum)))
{
$pagenum = 1;
}
//Here we count the number of results
//Edit $data to be your query
$data = mysql_query("SELECT * from user WHERE sex = '$sex1' AND location = '$location1' $q ") or die(mysql_error());
$rows = mysql_num_rows($data);
//This is the number of results displayed per page
$page_rows = 5;
//This tells us the page number of our last page
$last = ceil($rows/$page_rows);
//this makes sure the page number isn't below one, or more than our maximum pages
if ($pagenum < 1)
{
$pagenum = 1;
}
elseif ($pagenum > $last)
{
$pagenum = $last;
}
//This sets the range to display in our query
$max = 'limit ' .($pagenum - 1) * $page_rows .',' .$page_rows;
echo "<TABLE BORDER=1 CELLPADDING=0 CELLSPACING=0 BORDERCOLOR=#540EAD>";
//This is your query again, the same one... the only difference is we add $max into it
$data_p = mysql_query("SELECT * from user WHERE sex = '$sex1' AND location = '$location1' $q $max ") or die(mysql_error());
echo $sex1;
//This is where you display your query results
while ($info = mysql_fetch_array($data_p)) {
$id2 = $info['ID'];
$photo2 = $info['photo'];
$username2 = $info['username'];
$location2 = $info['location'];
$email2 = $info['email'];
echo "
<TR>
<TD width=75><a href= 'masterdetails.php?id=$username2''><img src=upload_images/{$photo2} width=150 /></a></TD>
<TD width=100 border=1 border-style=\"solid\" border-color=\"RED\" align=centre>$username2<p>{$row['age']}<p>$location2</TD>
<TD width=450>About $username2<p>{$row['about']}</TD>
</TR>";
}
echo "</TABLE>";
// This shows the user what page they are on, and the total number of pages
echo " --Page $pagenum of $last-- <p>";
// First we check if we are on page one. If we are then we don't need a link to the previous page or the first page so we do nothing. If we aren't then we generate links to the first page, and to the previous page.
if ($pagenum == 1)
{
}
else
{
echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=1'> <<-First</a> ";
echo " ";
$previous = $pagenum-1;
echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$previous'> <-Previous</a> ";
}
//This does the same as above, only checking if we are on the last page, and then generating the Next and Last links
if ($pagenum == $last)
{
}
else {
$next = $pagenum+1;
echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$next'>Next -></a> ";
echo " ";
echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$last'>Last ->></a> ";
}
Thanks in advance!