脚本忘记搜索关键字

时间:2011-09-23 16:35:49

标签: php mysql

当我转到下一页(从index.php到index.php?page = 2)时,脚本会忘记搜索关键字“for example country=US”并在下一页显示默认选项(country=) 。然后我也尝试添加(WHERE country ='“.mysql_real_escape_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";

对于脚本中的混乱,我很抱歉,因为我从网上发现的部分收集了它等等。所以我仍然没有足够的技能来发现错误。谢谢你的任何建议。

<?  
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>\n";       
    }

    echo "<div align=left>$text</div>";
    echo "<table align=center> 
    <div align=left><tr>\n
    <td>Records Found: $num &nbsp; \n
    <td> &nbsp;\n

</tr>\n
<tr> \n</div>";
$counter=0;
while($row=mysql_fetch_array($result))
{ 

2 个答案:

答案 0 :(得分:0)

如果你想继承POST和GET变量,你实际上应该有一些隐藏的输入字段。因此,当您渲染新页面时,您将$ _REQUEST中的所有值分配给它们各自的输入。因此,您将在以后使用它们。

e.g。

<input type="hidden" name="country" value="<?php echo empty($_REQUEST['country'] ? '':$_REQUEST['country']; ?>"/>

作为替代方案,如果您有会话,则可以将它们存储到会话变量中。

答案 1 :(得分:0)

如果您希望当前搜索值在$_POST中可用,则必须对其进行POST。您正在向index.php?page=2发出GET请求,因此搜索字词不会出现(在GET或POST中)。

您可以将它们包含在GET中,然后从$_GET中读取它们,而不是在顶部的循环中读取它们。然后,您的所有链接都必须包含所有搜索参数,如下所示:

"<a href=\"$targetpage?page=$counter&name=$name&country=$country&ip=$ip&map=$map...