English 中文(简体)
文本忘记了搜索关键词
原标题:Script forgets search keyword
  • 时间:2011-09-23 16:35:49
  •  标签:
  • php
  • mysql

当我上下页(从指数.php到指数.php?page=2),则文字忘记了搜索关键词“,例如国家=US,并在下页的缺省选项(country=)上显示。 接着,我还试图补充(WHEREcountry=“.mysql_real_e爱因_string($_GET[ country] >),但我认为,这一行文不做以下工作:

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>";                 
                }
                $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>
";       
    }

    echo "<div align=left>$text</div>";
    echo "<table align=center> 
    <div align=left><tr>

    <td>Records Found: $num &nbsp; 

    <td> &nbsp;


</tr>

<tr> 
</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 ]; ?>"/>

作为一种替代办法,如果你有一届会议,你可以将其储存到届会中。

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...




相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

php return a specific row from query

Is it possible in php to return a specific row of data from a mysql query? None of the fetch statements that I ve found return a 2 dimensional array to access specific rows. I want to be able to ...

Character Encodings in PHP and MySQL

Our website was developed with a meta tag set to... <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> This works fine for M-dashes and special quotes, etc. However, I ...

Pagination Strategies for Complex (slow) Datasets

What are some of the strategies being used for pagination of data sets that involve complex queries? count(*) takes ~1.5 sec so we don t want to hit the DB for every page view. Currently there are ~...

Averaging a total in mySQL

My table looks like person_id | car_id | miles ------------------------------ 1 | 1 | 100 1 | 2 | 200 2 | 3 | 1000 2 | 4 | 500 I need to ...

热门标签