When running the script below I am able to get all related table results and display them the way I want. When it came to my paging script I entered and limited the rows per page to 2 (for a 3 record result) I get the first 2 records on page fine, when click through to next I get notices about undefined variables. I really dont understand.
The code is,
[code=php]
<html>
<head>
</head>
<body>
<?php
//include connection.php
//This checks to see if there is a page number. If not, it will set it to page 1
if (!(isset($pagen um)))
{
$pagenum = 1;
}
$min_price = $_POST['min_price'];
$max_price = $_POST['max_price'];
$property_type = $_POST['type'];
$location = $_POST['location'];
$min_bedrooms = $_POST['min_beds'];
$keywords = $_POST['keywords'];
if($keywords != " ")
{
$result = mysql_query("SE LECT * FROM search WHERE price BETWEEN '$min_price' AND '$max_price' AND bedrooms >= '$min_bedrooms' AND location = '$location' AND type = '$property_type ' AND keywords LIKE '%$keywords%' ");
}
else
{
$result = mysql_query("SE LECT * FROM search WHERE price BETWEEN '$min_price' AND '$max_price' AND bedrooms >= '$min_bedrooms' AND location = '$location' AND type = '$property_type ' ");
}
if(!$result) die(mysql_error ());
$rows = mysql_num_rows( $result);
if($rows== 0) die("<p>No matches met your criteria.");
//This is the number of results displayed per page
$page_rows = 2;
//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;
//This is your query again, the same one... the only difference is we add $max into it
//$data_p = mysql_query("SE LECT * FROM search WHERE price BETWEEN '$min_price' AND '$max_price' AND bedrooms >= '$min_bedrooms' AND location = '$location' AND type = '$property_type ' AND keywords LIKE '%$keywords%' $max") or die(mysql_error ());
if($keywords != " ")
{
$data_p = mysql_query("SE LECT * FROM search WHERE price BETWEEN '$min_price' AND '$max_price' AND bedrooms >= '$min_bedrooms' AND location = '$location' AND type = '$property_type ' AND keywords LIKE '%$keywords%' $max");
}
else
{
$data_p = mysql_query("SE LECT * FROM search WHERE price BETWEEN '$min_price' AND '$max_price' AND bedrooms >= '$min_bedrooms' AND location = '$location' AND type = '$property_type ' $max");
}
if(!$data_p) die(mysql_error ());
while($info=mys ql_fetch_array( $data_p)){
$formatted = number_format($ info['price'],2);
echo "<div id=\"right\"><i mg src=\"".$info['image']."\"><a href=\"detail.p hp\">".$info['title']."</a><h4>Offers over £".$formatted." </h4><p>".$info['type'].", ".$info['bedrooms']." bedrooms</p><br /></div>\n";
}
echo "<p>";
// 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=$prev ious'> <-Previous</a> ";
}
//just a spacer
echo " ---- ";
//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> ";
}
?>
</body>
</html>
[/code]
It may be because I'm tired but I can't see what would cause this. Please help if you can.
The code is,
[code=php]
<html>
<head>
</head>
<body>
<?php
//include connection.php
//This checks to see if there is a page number. If not, it will set it to page 1
if (!(isset($pagen um)))
{
$pagenum = 1;
}
$min_price = $_POST['min_price'];
$max_price = $_POST['max_price'];
$property_type = $_POST['type'];
$location = $_POST['location'];
$min_bedrooms = $_POST['min_beds'];
$keywords = $_POST['keywords'];
if($keywords != " ")
{
$result = mysql_query("SE LECT * FROM search WHERE price BETWEEN '$min_price' AND '$max_price' AND bedrooms >= '$min_bedrooms' AND location = '$location' AND type = '$property_type ' AND keywords LIKE '%$keywords%' ");
}
else
{
$result = mysql_query("SE LECT * FROM search WHERE price BETWEEN '$min_price' AND '$max_price' AND bedrooms >= '$min_bedrooms' AND location = '$location' AND type = '$property_type ' ");
}
if(!$result) die(mysql_error ());
$rows = mysql_num_rows( $result);
if($rows== 0) die("<p>No matches met your criteria.");
//This is the number of results displayed per page
$page_rows = 2;
//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;
//This is your query again, the same one... the only difference is we add $max into it
//$data_p = mysql_query("SE LECT * FROM search WHERE price BETWEEN '$min_price' AND '$max_price' AND bedrooms >= '$min_bedrooms' AND location = '$location' AND type = '$property_type ' AND keywords LIKE '%$keywords%' $max") or die(mysql_error ());
if($keywords != " ")
{
$data_p = mysql_query("SE LECT * FROM search WHERE price BETWEEN '$min_price' AND '$max_price' AND bedrooms >= '$min_bedrooms' AND location = '$location' AND type = '$property_type ' AND keywords LIKE '%$keywords%' $max");
}
else
{
$data_p = mysql_query("SE LECT * FROM search WHERE price BETWEEN '$min_price' AND '$max_price' AND bedrooms >= '$min_bedrooms' AND location = '$location' AND type = '$property_type ' $max");
}
if(!$data_p) die(mysql_error ());
while($info=mys ql_fetch_array( $data_p)){
$formatted = number_format($ info['price'],2);
echo "<div id=\"right\"><i mg src=\"".$info['image']."\"><a href=\"detail.p hp\">".$info['title']."</a><h4>Offers over £".$formatted." </h4><p>".$info['type'].", ".$info['bedrooms']." bedrooms</p><br /></div>\n";
}
echo "<p>";
// 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=$prev ious'> <-Previous</a> ";
}
//just a spacer
echo " ---- ";
//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> ";
}
?>
</body>
</html>
[/code]
It may be because I'm tired but I can't see what would cause this. Please help if you can.
Comment