Link to home
Start Free TrialLog in
Avatar of satmanuk
satmanukFlag for United Kingdom of Great Britain and Northern Ireland

asked on

problem with PHP limit page and header("Location:

Hi all,

I am having a problem with a php page im working on.
The page is a results page from a keyword search page.

On this page i limit the records to 10 and have page numbers so the user can click on the page they want records for.

I also have a  script at the top of the page that directs the user back to the search form and echos a message if no fields are filled in and the search is submitted.

The problem i have is if i click one of the page numbers  to view records on that recordset page, the page doesnt load, instead the header code at the top of my page is executed. and i get redirected to the search form as if i just entered a blank search?
I assume this is due to the way i have my code laid out but i am unsure how to fix the issue while retaining my header script at the top of the page.

Here is my entire page code so you can see what i am reffering to.

<?php require_once('Connections/EE_con.php'); ?>
<?php

$keyword_street = "";
$keyword_village = "";
$case = 0;
if(!isset($_REQUEST["keyword_street"]) || $_REQUEST["keyword_street"]=='')
{
      $keyword_street = "<font color=\"red\">Please enter this field!</font>";
}

if(!isset($_REQUEST["keyword_village"]) || $_REQUEST["keyword_village"]=='')
{
      $keyword_village = "<font color=\"red\">Please enter this field!</font>";
}
     
if($keyword_village!="" && $keyword_street!="")
{
      header("Location: keyword2.php?street=$keyword_street&village=$keyword_village");
      // Keyword2.php is the name of the page where my search form is.
     exit();
}
?>

<?

$maxRows_Recordset1 = 10;
$pageNum_Recordset1 = 0;
if (isset($_GET['pageNum_Recordset1'])) {
  $pageNum_Recordset1 = $_GET['pageNum_Recordset1'];
}
$startRow_Recordset1 = $pageNum_Recordset1 * $maxRows_Recordset1;


mysql_select_db($database_EE_con, $EE_con);

$keywordstreet = $_REQUEST['keyword_street'];
$keywordvillage = $_REQUEST['keyword_village'];
$K_street = $_POST['keyword_street'];
$K_village = $_POST['keyword_village'];



if (strlen($_POST['keyword_street']) > 0) {
$test = "one";
}
if (strlen($_POST['keyword_village']) > 0) {
$test2 = "two";
}

if ($test = "one" && $test2 = "two") {
$where_clause = "WHERE property_address1 LIKE '%$keywordstreet%' AND property_towncity LIKE '%$keywordvillage%'";
   }

$query_Recordset1 = "SELECT * FROM properties $where_clause ORDER BY price ASC";
$query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Recordset1, $startRow_Recordset1, $maxRows_Recordset1);
$Recordset1 = mysql_query($query_limit_Recordset1, $EE_con) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

if (isset($_GET['totalRows_Recordset1'])) {
  $totalRows_Recordset1 = $_GET['totalRows_Recordset1'];
} else {
  $all_Recordset1 = mysql_query($query_Recordset1);
  $totalRows_Recordset1 = mysql_num_rows($all_Recordset1);
}
$totalPages_Recordset1 = ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;



if ($totalRows_Recordset1 == 0){




echo "There are no results matching your search criteria <BR> Keyword 1:$K_street <BR> Keyword 2:$K_village <BR><BR> Click Here to search again!";
}

echo "whereclause:$where_clause<br>";
echo "keyword Street: $keywordstreet<br>";
echo "keyword Village: $keywordvillage<br>";
echo "test: $test<br>";
echo "test2: $test2<br>";
   do {

   ?>
   
 
    <p><?php echo $row_Recordset1['property_numname']; ?></p>
    <p><?php echo $row_Recordset1['property_address1']; ?></p>
    <p><?php echo $row_Recordset1['property_address2']; ?></p>
    <p><?php echo $row_Recordset1['property_towncity']; ?></p>
    <p><?php echo $row_Recordset1['prop_postcode']; ?></p>
    <p><?php echo $row_Recordset1['pic1']; ?></p>
    <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>

Page           <?php for ($i = 0; $i <= $totalPages_Recordset1; $i++) {
  $href = sprintf('%s?pageNum_Recordset1=%d%s', $currentPage, $i, $queryString_Recordset1);
  $label = $i + 1;
  echo '<a href="'.$href.'">'.$label.'</a>';
}
?>

<?php
mysql_free_result($Recordset1);
?>
Avatar of hielo
hielo
Flag of Wallis and Futuna image

These:
if(!isset($_REQUEST["keyword_street"]) || $_REQUEST["keyword_street"]=='')
{
      $keyword_street = "<font color=\"red\">Please enter this field!</font>";
}

if(!isset($_REQUEST["keyword_village"]) || $_REQUEST["keyword_village"]=='')
{
      $keyword_village = "<font color=\"red\">Please enter this field!</font>";
}
make sure that $keyword_village and $keyword_street always contain some value. Thus,
if($keyword_village!="" && $keyword_street!="")
will always be true an the header function will execute
Avatar of satmanuk

ASKER

I get that but what i don't get is why they don't have a value. If they didn't then i wouldn't be seeing my results in the first place?
> why they don't have a value
you are wrong! you are checking the variables
$keyword_village  && $keyword_street
and you are always setting a value for them. By the time the script "hits" the if, neither of those variables is empty!
Try this:
if((!isset($_REQUEST["keyword_street"]) || $_REQUEST["keyword_street"]=='') && (!isset($_REQUEST["keyword_village"]) || $_REQUEST["keyword_village"]=='') )


instead of:
if($keyword_village!="" && $keyword_street!="")
I replaced the line with your code but nothing changes.
try this

if(!isset($_GET['pageNum_Recordset1']) {
      
      if(!isset($_REQUEST["keyword_street"]) || $_REQUEST["keyword_street"]=='')
      {
              $keyword_street = "<font color=\"red\">Please enter this field!</font>";
      }
      
      if(!isset($_REQUEST["keyword_village"]) || $_REQUEST["keyword_village"]=='')
      {
              $keyword_village = "<font color=\"red\">Please enter this field!</font>";
      }
             
      if($keyword_village!="" && $keyword_street!="")
      {
              header("Location: keyword2.php?street=$keyword_street&village=$keyword_village");
              // Keyword2.php is the name of the page where my search form is.
             exit();
      }

}
I get this when i run a search
Parse error: syntax error, unexpected '{' in /home/melvin/public_html/estateagents/keywordresults.php on line 7
forgot a ) .. sorry

if(!isset($_GET['pageNum_Recordset1'])) {
      
      if(!isset($_REQUEST["keyword_street"]) || $_REQUEST["keyword_street"]=='')
      {
              $keyword_street = "<font color=\"red\">Please enter this field!</font>";
      }
      
      if(!isset($_REQUEST["keyword_village"]) || $_REQUEST["keyword_village"]=='')
      {
              $keyword_village = "<font color=\"red\">Please enter this field!</font>";
      }
             
      if($keyword_village!="" && $keyword_street!="")
      {
              header("Location: keyword2.php?street=$keyword_street&village=$keyword_village");
              // Keyword2.php is the name of the page where my search form is.
             exit();
      }

}
Ok cool cheers, The search works again and when i click the numbers it doesnt revert to the search page. but now when i click the page numbers the results screw up and show all in the table rather than the results based on my search? Example the results were 2 pages of records. I click page 2 and then the results display all records. So the search results are lost.

any ideas?
ASKER CERTIFIED SOLUTION
Avatar of steelseth12
steelseth12
Flag of Cyprus image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
just wish i knew how you did that! it works!

Many thanks

i want to do something similar to  the header script for when a user searches something thats not found.
 at the moment i got this line:

if ($totalRows_Recordset1 == 0){
echo "There are no results matching your search criteria <BR> Keyword 1:$K_street <BR> Keyword 2:$K_village <BR><BR> Click Here to search again!";
}

Do you know if its possible to treat this the same as when a user trys to submit no data?
$queryString_Recordset1 = "&keyword_street=".$_REQUEST['keyword_street']."&keyword_village=".$_REQUEST['keyword_village'];

That just passes the search criteria to the next page.

 >> Do you know if its possible to treat this the same as when a user trys to submit no data?

You mean redirect the user back to the search page ?
yes in essence what i want is the user to get a message on the searchform.php page saying no results found. like i have for when the form is submitted with no data.

Or instead of my code :
echo "There are no results matching your search criteria <BR> Keyword 1:$K_street <BR> Keyword 2:$K_village <BR><BR> Click Here to search again!";
}

have the user directed to a new page where i can state no results were found.
Congratulations from ellandrd!!!
Great to see a relatively new member with obviously valuable skills provide the 2 Millionth solution!  Well done!
Well Done, and 2 Milions Congratulations :)

Regards,

Naser
Well done steelseth12 !!
Thanks everyone! I was shocked to find that my question earnt me a laptop! i havent a clue what type it is? anyone know?

THANKS EXPERTS EXCHANGE!
>>i havent a clue what type it is?

from the EE newsletter

"Each laptop is outfitted with an Intel Core 2 Duo 2.0GHz processor, a 17-inch wide screen display, 2GB of memory, and dual 120GB hard drives. Our superb designers mocked up some flashy desktop wallpapers for the winners new laptops....."

congrats satmanuk!!

kiranvj
These winners will also receive limited edition Experts Exchange 2,000,000 solutions shirts, and recognition in their member profiles as being part of EE history.

Cheers!
COOL! thats a beast of a laptop!

:O) :O)
I want to be this kind of winner :((
Great!
Welldone & congratz
Avatar of sachindurge
sachindurge

gud one