Dear all,
What I am trying to do is as follows:
(1) all properties result readily displayed in webpage ; and
(2) property search tool (location, price & type) works as usual (search form already done) .
For example, when I go to my property webpage, I can see display of property list straight away. Then , I might want to use my property search tool to narrow down my search.
I tried to amend the code but it's either I get only (1) or (2) , but never both. Can someone please help ?
<?php
//I USED YOUR CONNECTION BUT I PREFER YOU GET FAMILIER WITH PDO
$con = mysql_connect('localhost', 'root', '');
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("a_database", $con);
// When i use this code I will get (2) i.e. property search tool (location, price & type) works as usual (search form already done) .
/*
$gType = isset($_GET['type']) ? $_GET['type'] : 'ALL';
$gLocation = isset($_GET['location']) ? $_GET['location'] : 'ALL';
$gPrice = isset($_GET['price']) ? $_GET['price'] : 'ALL';
$gHref="ContactUs_OurTeam(2).html#";
*/
// When i use this code I will get (1) i.e. all properties result readily displayed in webpage
$gType = 'ALL';
$gLocation = 'ALL';
$gPrice = 'ALL';
$gHref="ContactUs_OurTeam(2).html#";
//GOT RID OF ALL THE IF CONDITIONS. IF THE VALUES ARE NOT EQUAL TO 'ALL', USE THEM IN THE QUERY
$subQuery = array();
if($gType <> 'ALL')
$subQuery[] = 'type = \''.$gType.'\'';
if($gLocation <> 'ALL')
$subQuery[] = 'location = \''.$gLocation.'\'';
if($gPrice <> 'ALL')
$subQuery[] = 'price = \''.$gPrice.'\'';
/*
****FIRST BUG IN YOUR CODE*****
IN YOUR CODE YOU DONT CONSIDER THE FILTERS WHEN GETTING THE TOTAL RECORDS FOR THE PAGINATION, BUT IN THE ACTUAL DISPLAY QUERY YOU CONSIDER ABOUT THE FILTERS.
CONSIDER BELOW SCENARIO,
PROPERTY
--------
Type Price1
SOMETHING 100
SOMETHING 200
SOMETHING 300
LETS SAY YOU WANT ALL THE PROPERTIES WHICH PRICE EQUAL 400. THIS WILL RETURN 0 RECODS RIGHT. BUT SINCE YOUR TOTAL RECORDS QUERY WILL ALWAYS RETURN THE TOTAL NO OF RECODS IN THE TABLE IT WILL RETURN 3. THATS WHY YOU ALWAYS GET THE PAGINATION PAGES EVEN THOUGH YOU DONT HAVE ANY VALUES RELEVENT TO YOUR QUERY.
*/
$sql = "SELECT count(*) FROM property";
if(count($subQuery) > 0)
$sql .= ' WHERE '.implode('AND ', $subQuery);
$result = mysql_query($sql,$con) or trigger_error("SQL",E_USER_ERROR);
$r=mysql_fetch_row($result);
$numrows = $r[0];
$rowsperpage = 3;
$totalpages = ceil($numrows/$rowsperpage);
$currentpage = isset($_GET['currentpage']) ? $_GET['currentpage'] : 1;
$offset = ($currentpage - 1) * $rowsperpage;
$centerPages = "";
$paginationDisplay = "";
//SIMPLYFIED YOUR CODE JUST INTO ONE FOR LOOP
for($page = 1; $page <= $totalpages; $page++)
{
if ($page == $currentpage)
$centerPages .= ' <span class="pagNumActive">'.$page.'</span>';
else
/*$centerPages .= ' <a href="test.php?currentpage='.$page.'&type='.$gType.'&location='.$gLocation.'&price='.$gPrice.'">'.$page.'</a>'; */
$centerPages .= ' <a href="javascript:ajaxFunction('.$page.');">'.$page.'</a>';
/*$centerPages .= ' <a href="akmal.html?currentpage='.$page.'&type='.$gType.'&location='.$gLocation.'&price='.$gPrice.'">'.$page.'</a>';*/
}
/*
****SECOND BUG IN YOUR CODE*****
IF YOU CHECK YOUR CODE YOU`LL HAVE THIS IF CONDITION AS,
if ($totalpages != "1")
WHY USE DOUBLE CODE FOR 1? IT`S A INTERGER NOT A STRING.
*/
if ($totalpages != 1) {
$paginationDisplay .= 'Page <strong>' . $currentpage . '</strong> of ' . $totalpages. ' '; // instead of $pn insert $currentpage
/*
****THIRD BUG IN YOUR CODE*****
IN YOUR CODE YOU USE $_SERVER['REQUEST_URI'] AS THE HREF VALUE. WHY? JUST USE THE FILENAME DIRECTLY.
AND ALSO I SEE YOU HAVE USED,
<a href="'.$_SERVER['REQUEST_URI'].'¤tpage='.$add1.'&gType'.$gType.'&gLocation'.$gLocation.'&gPrice'.$gPrice.'">
LOOK AT THE GET VARIABLES.
1. THEY ARE SHOULD CHANGE AS,
- gType SHOULD BE type
- gLocation SHOULD BE location
- gPrice SHOULD BE price
2. WHERE IS THE EQUAL (=) SIGN AFTER EACH GET VARIABLE?
*/
if ($currentpage != 1) {
$previous = $currentpage - 1;
/*$paginationDisplay .= ' <a href="test.php?currentpage='.$previous.'&type='.$gType.'&location='.$gLocation.'&price='.$gPrice.'"> Back</a>';*/
$paginationDisplay .= ' <a href="javascript:ajaxFunction('.$previous.');"> Back</a>';
/*$paginationDisplay .= ' <a href="akmal.html?currentpage='.$previous.'&type='.$gType.'&location='.$gLocation.'&price='.$gPrice.'"> Back</a>';*/
}
$paginationDisplay .= '<span class="paginationNumbers">' . $centerPages . '</span>';
if ($currentpage != $totalpages) {
$nextPage = $currentpage + 1;
/*$paginationDisplay .= ' <a href="test.php?currentpage='.$nextPage.'&type='.$gType.'&location='.$gLocation.'&price='.$gPrice.'"> Next</a>';*/
$paginationDisplay .= ' <a href="javascript:ajaxFunction('.$nextPage.');"> Next</a>';
/*$paginationDisplay .= ' <a href="akmal.html?currentpage='.$nextPage.'&type='.$gType.'&location='.$gLocation.'&price='.$gPrice.'"> Next</a>';*/
}
}
if($numrows == 0)
echo 'No Records found';
else
{
?>
<!--<br> current page: <?php echo $currentpage; ?> <br> --->
<div style="margin-left:64px; margin-right:64px;">
<br><h2>Total Properties: <?php echo $numrows ; ?></h2></br>
</div>
<div style="margin-left:58px; margin-right:58px; padding:6px; background-color:#FFF; border:#999 1px solid;"><?php echo $paginationDisplay; ?></div>
<div style="margin-left:64px; margin-right:64px;">
<?php
$sql = 'SELECT Type,Price1,Location FROM property';
if(count($subQuery) > 0)
$sql .= ' WHERE '.implode('AND ', $subQuery);
$sql .= ' LIMIT '.$offset.','.$rowsperpage;
$result = mysql_query($sql);
?>
<!----call for property table style.css---->
<style type="text/css">
<!--
@import url("style.css");
-->
</style>
<!----end of call for property style.css---->
<table id="box-table-a" >
<thead>
<tr>
<th scope="col">Type</th>
<th scope="col">Price</th>
<th scope="col">Location</th>
</tr>
</thead>
<?php
while($row = mysql_fetch_array($result)) {
echo "<tr>";
echo "<td><a href='$gHref'>" . $row['Type'] . "</a></td>";
echo "<td>" . $row['Price1'] . "</td>";
echo "<td>" . $row['Location'] . "</td>";
echo "</tr>";
}
?>
<!--<br></table></br>-->
</table>
</div>
<div style="margin-left:58px; margin-right:58px; padding:6px; background-color:#FFF; border:#999 1px solid;"><?php echo $paginationDisplay; ?></div>
<?php
}
?>
<html>
<style type="text/css">
.pagNumActive {
color: #000;
border:#060 1px solid;
background-color: #D2FFD2;
padding-left:3px;
padding-right:3px;
}
.paginationNumbers a:link {
color: #000;
text-decoration: none;
border:#999 1px solid;
background-color:#F0F0F0;
padding-left:3px;
padding-right:3px;
}
.paginationNumbers a:visited {
color: #000;
text-decoration: none;
border:#999 1px solid;
background-color:#F0F0F0;
padding-left:3px;
padding-right:3px;
}
.paginationNumbers a:hover {
color: #000;
text-decoration: none;
border:#060 1px solid;
background-color: #D2FFD2;
padding-left:3px;
padding-right:3px;
}
.paginationNumbers a:active {
color: #000;
text-decoration: none;
border:#999 1px solid;
background-color:#F0F0F0;
padding-left:3px;
padding-right:3px;
}
h2{
position:absolute;
top:50px;
left:550px;
font-size:15px;
font-weight:normal;
}
</style>
</html>