• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 4440
  • Last Modified:

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);
?>
0
satmanuk
Asked:
satmanuk
  • 8
  • 4
  • 3
  • +8
1 Solution
 
hieloCommented:
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
0
 
satmanukAuthor Commented:
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?
0
 
hieloCommented:
> 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!
0
Learn to develop an Android App

Want to increase your earning potential in 2018? Pad your resume with app building experience. Learn how with this hands-on course.

 
hieloCommented:
Try this:
if((!isset($_REQUEST["keyword_street"]) || $_REQUEST["keyword_street"]=='') && (!isset($_REQUEST["keyword_village"]) || $_REQUEST["keyword_village"]=='') )


instead of:
if($keyword_village!="" && $keyword_street!="")
0
 
satmanukAuthor Commented:
I replaced the line with your code but nothing changes.
0
 
steelseth12Commented:
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();
      }

}
0
 
satmanukAuthor Commented:
I get this when i run a search
Parse error: syntax error, unexpected '{' in /home/melvin/public_html/estateagents/keywordresults.php on line 7
0
 
steelseth12Commented:
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();
      }

}
0
 
satmanukAuthor Commented:
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?
0
 
steelseth12Commented:
try this

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

$queryString_Recordset1 = "&keyword_street=".$_REQUEST['keyword_street']."&keyword_village=".$_REQUEST['keyword_village'];

if ($keywordstreet) {
$test = "one";
}
if ($keywordvillage) {
$test2 = "two";
}
0
 
satmanukAuthor Commented:
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?
0
 
steelseth12Commented:
$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 ?
0
 
satmanukAuthor Commented:
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.
0
 
sandip132Commented:
0
 
James MurrellProduct SpecialistCommented:
0
 
ellandrdCommented:
Congratulations from ellandrd!!!
0
 
Klaatu01Commented:
Great to see a relatively new member with obviously valuable skills provide the 2 Millionth solution!  Well done!
0
 
Naser GabajE&P Software Implementation SpecialistCommented:
Well Done, and 2 Milions Congratulations :)

Regards,

Naser
0
 
Kiran Paul VJComputer EngineerCommented:
Well done steelseth12 !!
0
 
satmanukAuthor Commented:
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!
0
 
Kiran Paul VJComputer EngineerCommented:
>>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
0
 
sandip132Commented:
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!
0
 
satmanukAuthor Commented:
COOL! thats a beast of a laptop!

:O) :O)
0
 
jinn_hnnlCommented:
I want to be this kind of winner :((
Great!
Welldone & congratz
0
 
sachindurgeCommented:
gud one
0

Featured Post

Take Control of Web Hosting For Your Clients

As a web developer or IT admin, successfully managing multiple client accounts can be challenging. In this webinar we will look at the tools provided by Media Temple and Plesk to make managing your clients’ hosting easier.

  • 8
  • 4
  • 3
  • +8
Tackle projects and never again get stuck behind a technical roadblock.
Join Now