Jump to content

Loosing a POST Value in a search page


ballouta

Recommended Posts

Hello

 

I have this code that searches multiple tables. running this query in the phpmyadmin page works fine and gives correct results.

I echo-ed the $kw and noticed that it is lost (empty) when I click on Next (when moving to the second page or so..)

How do I save the $kw for all search results?

 

Thank you so much

 

$kw = trim($_POST['keyword']);
$kw = mysql_real_escape_string($kw);	

//Nomber of rows to display per page
$page_rows=20;

//This checks to see if there is a page number. If not, it will set it to page 1 
 if (!(isset($pagenum)))
 {
 $pagenum = 1;
 }

echo "$kw of $pagenum";

//Count we count the number of results
$data = mysql_query("
	SELECT `id`,`title`, `body`, 'condoms_en' as REF FROM `condoms_en` where `title` like '%$kw%' OR `body` like '%$kw%'
UNION
	SELECT `id`,`title`, `body`, 'discr_en' as REF FROM `discr_en` where `title` like '%$kw%' OR `body` like '%$kw%'
UNION
	SELECT `id`,`title`, `body`, 'diseases_en' as REF FROM `diseases_en` where `title` like '%$kw%' OR `body` like '%$kw%'
UNION
	SELECT `id`,`title`, `body`, 'express_en' as REF FROM `express_en` where `title` like '%$kw%' OR `body` like '%$kw%' ") or die(mysql_error());
$rows = mysql_num_rows($data);

if ($rows ==1 || $rows > 1)
	{
//echo "Number of rows $rows <br/>";

//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; 
 } 

//echo "<h4>".$pagenum."-20 of ".$total."results</h4> <br />";
// This shows the user what page they are on, and the total number of pages
 echo " ===> Page $pagenum of $last <br/><br/>";

//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("
	SELECT `id`,`title`, `body`, 'condoms_en' as REF FROM `condoms_en` where `title` like '%$kw%' OR `body` like '%$kw%'
UNION
	SELECT `id`,`title`, `body`, 'discr_en' as REF FROM `discr_en` where `title` like '%$kw%' OR `body` like '%$kw%'
UNION
	SELECT `id`,`title`, `body`, 'diseases_en' as REF FROM `diseases_en` where `title` like '%$kw%' OR `body` like '%$kw%'
UNION
	SELECT `id`,`title`, `body`, 'express_en' as REF FROM `express_en` where `title` like '%$kw%' OR `body` like '%$kw%' $max") or die(mysql_error());

//This is where you display your query results
 while($info = mysql_fetch_array( $data_p ))
 {

 print $info['title']; //print $info['REF'];
 echo "<br>";
 }
 echo "<p><br/>";

 // 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 style=\"color: #FF0000\" href='{$_SERVER['PHP_SELF']}?pagenum=1'> <<-First</a> ";
 echo " ";
 $previous = $pagenum-1;
 echo " <a style=\"color: #FF0000\" href='{$_SERVER['PHP_SELF']}?pagenum=$previous'> <-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 style=\"color: #FF0000\" href='{$_SERVER['PHP_SELF']}?pagenum=$next'>Next -></a> ";
 echo " ";
 echo " <a style=\"color: #FF0000\" href='{$_SERVER['PHP_SELF']}?pagenum=$last'>Last ->></a> ";
 } 


} //results was found
else
{
echo "No results FOUND";
}

Link to comment
https://forums.phpfreaks.com/topic/216676-loosing-a-post-value-in-a-search-page/
Share on other sites

Hi

 

I got an idea from someone, using SESSIONS is the best way to do this.

 

can you help please me in the syntax now

how to replace '%$kw%' with the session variable e.g ($_SESSION['srch'])

 

SELECT `id`,`title`, `body`, 'discr_en' as REF FROM `discr_en` where `title` like '%$kw%' OR `body` like '%$kw%'

Thank you

Make sure you have session_start() at the top of your page, then just swap...

 

$kw = trim($_POST['keyword']);
$kw = mysql_real_escape_string($kw);

 

For....

 

if (isset($_POST['keyword'])) {
  $kw = mysql_real_escape_string(trim($_POST['keyword']));
} else if (isset($_SESSION['srch'])) {
  $kw = $_SESSION['srch']
  // rest of your code goes in here.
}

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.