Script forgets search keyword
When I go to the next page(from index.php to index.php?page=2), the script forgets search keyword "for example country=US
" and shows in the next page default option (country=)
. Then I also tried to add(WHERE country
='".mysql_real_escape_string($_GET['country']
)."') ,but in this way I think this line doesn't work:
foreach($_POST as $key => $value)
{
$clean[$key] = mysql_real_escape_string(trim($value));
}
$name=$clean['name'];
$country=$clean['country'];
$ip=$clean['ip'];
$map=$clean['map'];
$o="AND";
Sorry for the mess in the script, because I have collected it from the parts what I have found in the web and etc. So I still don't have enough skills to find out whats wrong. Thanks for any suggestion.
<?
include("conf.php");
foreach($_POST as $key => $value)
{
$clean[$key] = mysql_real_escape_string(trim($value));
}
$name=$clean['name'];
$country=$clean['country'];
$ip=$clean['ip'];
$map=$clean['map'];
$o="AND";
$rest="";
$text="Keywords : ";
if($name!="")
{
if($rest=="")
{
$rest.=" where name like '%$name%'";
$text.="Name like $name ";
}
else {
$rest.="$o where fname like '%$name%' or mname like '%$name%' or lname like '%$name%' ";
$text.="Name like $name ";
}
}
if($country!="")
{
if($rest=="")
{
$rest.="where country='$country' ";
$text.="Country = $country";
}
else
{
$rest.=" $o country='$country' ";
$text.=", Country = $country";
}
}
if($ip!="")
{
if($rest=="")
{
$rest.="where ip = '$ip' ";
$text.="Ip Address = $ip ";
}
else
{
$rest.=" $o ip = '$ip' ";
$text.=", Ip Address = $ip ";
}
}
if($port!="")
{
if($rest=="")
{
$rest.="where port = '$port' ";
$text.="Port = $port ";
}
else
{
$rest.=" $o port = '$port' ";
$text.=", Port = $port ";
}
}
if($map!="")
{
if($rest=="")
{
$rest.="where map = '$map' ";
$text.="Map = $map";
}
else
{
$rest.=" $o map = '$map' ";
$text.=", Map = $map";
}
}
if($rest!="")
{
$rest=$rest;
}
else
{
//die("Enter Search Parameter<br><br><br><br><br><br><br><br><br><br><br>");
}
$sql="select $search.* from $search $rest order by id";
$result=mysql_query($sql,$connection) or die(mysql_error());
$num=mysql_num_rows($result);
$adjacents = 3;
$limit = 10;
$query = "SELECT COUNT(*) as num FROM $search";
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $num;
/* Setup vars for query. */
$targetpage = "index.php"; //your file name (the name of this file)
//how many items to show per page
$page = $_GET['page'];
if($page)
$start = ($page - 1) * $limit; //first item to display on this page
else
$start = 0; //if no page var is given, set start to 0
/* Get data. */
$sql = "select $search.* from $search $rest order by id LIMIT $start, $limit";
$result = mysql_query($sql);
/* Setup page vars for display. */
if ($page == 0) $page = 1; //if no page var is given, default to 1.
$prev = $page - 1; //previous page is page - 1
$next = $page + 1; //next page is page + 1
$lastpage = ceil($total_pages/$limit); //lastpage is = total pages / items per page, rounded up.
$lpm1 = $lastpage - 1;
/*
Now we apply our rules and draw the pagination object.
We're actually saving the code to a variable in case we want to draw it more than once.
*/
$pagination = "";
if($lastpage > 1)
{
$pagination .= "<div class=\"pagination\">";
//previous button
if ($page > 1)
$pagination.= "<a href=\"$targetpage?page=$prev\">« previous</a>";
else
$pagination.= "<span class=\"disabled\">« previous</span>";
//pages
if ($lastpage < 7 + ($adjacents * 2)) //not enough pages to bother breaking it up
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"current\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
}
}
elseif($lastpage > 5 + ($adjacents * 2)) //enough pages to hide some
{
//close to beginning; only hide later pages
if($page < 1 + ($adjacents * 2))
{
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"current\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
}
$pagination.= "...";
$pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>";
$pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";
}
//in middle; hide some front and some back
elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
{
$pagination.= "<a href=\"$targetpage?page=1\">1</a>";
$pagination.= "<a href=\"$targetpage?page=2\">2</a>";
$pagination.= "...";
for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"current\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
}
开发者_StackOverflow $pagination.= "...";
$pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>";
$pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";
}
//close to end; only hide early pages
else
{
$pagination.= "<a href=\"$targetpage?page=1\">1</a>";
$pagination.= "<a href=\"$targetpage?page=2\">2</a>";
$pagination.= "...";
for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"current\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
}
}
}
//next button
if ($page < $counter - 1)
$pagination.= "<a href=\"$targetpage?page=$next\">next »</a>";
else
$pagination.= "<span class=\"disabled\">next »</span>";
$pagination.= "</div>\n";
}
echo "<div align=left>$text</div>";
echo "<table align=center>
<div align=left><tr>\n
<td>Records Found: $num \n
<td> \n
</tr>\n
<tr> \n</div>";
$counter=0;
while($row=mysql_fetch_array($result))
{
If you want to carry over POST and GET variables you actually should have some hidden input fields for them. So when you render the new page you assign all values from $_REQUEST to their respective inputs. Thus you will have them later on.
e.g.
<input type="hidden" name="country" value="<?php echo empty($_REQUEST['country'] ? '':$_REQUEST['country']; ?>"/>
As an alternative you can store them to a session variable if you have a session.
If you want the current search values to be available in $_POST
, then you have to POST them. You are making a GET request to index.php?page=2
, so the search terms will not be there (in either GET or POST).
You could include them in GET and read them from $_GET
instead in your loop at the top. Then all of your links would have to include all the search parameters, something like this:
"<a href=\"$targetpage?page=$counter&name=$name&country=$country&ip=$ip&map=$map...
精彩评论