Hi,
I am trying to search a list of contacts by region which is working fine but when I click on the next page (pagination) it doesn't carry the region with the search so it goes back to listing all contacts.
Is there something wrong with my code
<?php
include("../Connections/conn.php");
// The basic SELECT statement
$select = 'SELECT DISTINCT id, contact_name, title, name, title_2, name_2, res_add, postal_add, phone, mobile, fax, email, orgid';
$from = ' FROM contact';
$where = ' WHERE 1=1';
$sort = " order by contact.contact_name asc ";
$rid = $_POST['rid'];
if ($rid != '') { // A category is selected
$from .= ', contactregion';
$where .= " AND id=contactid AND regionid='$rid'";
}
// set number of results to display per page (in this case, 10 per page)
$pagelimit = "10";
// run query
$strSQL = mysql_query($select . $from . $where) or die(mysql_error());
// count number of matches
$totalrows = mysql_num_rows($strSQL);
if ($totalrows > 0) {
// determine how many pages there will be by using ceil() and dividing total rows by pagelimit
$pagenums = ceil ($totalrows/$pagelimit);
// if no value for page, page = 1
if ($_GET['page']==''){
$page='1';
}
else
$page = $_GET['page'];
// create a start value
$start = ($page-1) * $pagelimit;
// blank matches found
echo "<b>" . $totalrows . " matches found</b><br>\n";
// Showing Results 1 to 10 (or if you're page limit were 15) 1 to 15, etc.
$starting_no = $start + 1;
if ($totalrows - $start < $pagelimit) {
$end_count = $totalrows;
} elseif ($totalrows - $start >= $pagelimit) {
$end_count = $start + $pagelimit;
}
echo "Results $starting_no to $end_count shown.<br>\n";
// create dynamic next, previous, and page links
/* lets say you're set to show 10 results per page and your script comes out with 12 results.
this will allow your script to say next 2 if you're on the first page and previous 10 if you're on the second page. */
if ($totalrows - $end_count > $pagelimit) {
$var2 = $pagelimit;
} elseif ($totalrows - $end_count <= $pagelimit) {
$var2 = $totalrows - $end_count;
}
$space = " ";
echo '<table width="600">';
echo '<tr>';
echo '<th width="90%">Business Name</th>';
echo '</tr>';
$strquery = $select . $from . $where . $sort . " LIMIT ".$start." ,".$pagelimit;
//echo $strquery; // check the correct query is being written
$strSQL = mysql_query("$strquery") or die('Database error: '.mysql_error());
$contactname = ereg_replace('\\[(B|EB|I|EI|L|L=|L=[-_./a-z0-9!&%#?+,\'=:;@~]+|EL|E)?(]|$)', '', $contactname);
while ($contact = mysql_fetch_array($strSQL)) {
echo "<tr valign='top'>\n";
$id = $contact['id'];
$contactname = htmlspecialchars($contact['contact_name']);
echo "<td><a href=\"editcontact.php?id=$id\">$contactname</a></td>\n";
}
echo "<a href=\"contacts.php\">Search again</a></table>";
// previous link (if you're on any page besides the first, create previous link)
if ($page>1) {
echo "« <a href='" . $PHP_SELF . "?page=".($page-1)."&reg=$rid' class=main>Previous" . $space . $pagelimit . "</a>" . $space . $space . "";
}
// dynamic page number links
for ($i=1; $i<=$pagenums; $i++) {
if ($i!=$page) {
echo " <a href='" . $PHP_SELF . "?page=$i.&searchtext=$searchtext&reg=$rid' class=main>$i</a>";
}
else {
echo " <b>[".$i."]</b>";
}
}
// next link (if the page you are on is less than the total amount of page numbers, there are more pages left)
if ($page<$pagenums) {
echo "" . $space . $space . $space . $space . " <a href='" . $PHP_SELF . "?page=".($page+1)."&searchtext=$searchtext&reg=$rid' class=main>Next " . $var2 . "</a> »";
}
// LIMIT 0,10 will start at 0 and display 10 results
// LIMIT 10,5 will start at 10 and display 5 results
/* now you can do whatever you'd like with this query. it will only output ten results per page.
change the $pagelimit variable to whatever to output more than 10 result per page. */
}
else
echo "No results found. <a href=\"index.html\">Search again</a>";
?>
Thanks in advance for your help.