【问题标题】:PHP | How to remove a specific string from the url stringPHP |如何从 url 字符串中删除特定字符串
【发布时间】:2015-09-09 20:56:53
【问题描述】:

我正在为我的网站创建一些分页,并且除了一件事之外一切正常。该页面显示来自数据库的列表,可以选择根据您所在的页面点击下一个或上一个,这很好用。我还有一个搜索功能,它使用带有输入和选择的表单,然后我使用 $_GET 变量将搜索请求存储在 url 中。问题是当我点击下一个或上一个锚标记时,它的 href 链接到同一页面,并且在 page= url 的区域中具有下一个页码。所以它基本上删除了除 page= 部分之外的 $_GET 变量,这意味着当我使用分页按钮时我失去了搜索功能。

所以到目前为止我所做的是尝试创建一个变量来获取当前 url 的 $_GET 变量并将其放入一个变量中。然后我删除该变量字符串的分页部分;所以我可以在处理分页的变量之后放入锚标记。从而在每个页面中保持搜索请求。

我将在下面提供我的一些代码。我将尝试删除所有不必要的部分,以使其更易于阅读。

 <?php 

        //count how many results their are
        $count_query = mysqli_query($connect, "SELECT id FROM mls_listings_phrets");
        $count = mysqli_num_rows($count_query);

        // get the current urls $_GET varibles (not finished)
        $getString = "&" . $_SERVER['QUERY_STRING'];


        //Pageination Starts here
        if(isset($_GET['page'])){
            $page = preg_replace("#[^0-9]#", "", $_GET['page']);
        }else{
            $page = 1;
        }

        // limit per page
        $perPage = 10;

        $limit = "LIMIT " . ($page - 1)*$perPage . ", $perPage";

        $count_query = mysqli_query($connect, "SELECT id FROM mls_listings_phrets ORDER BY id DESC $limit");
        if($lastPage != 1){

            if($page != 1){
                $prev = $page -1;
                if(isset($_GET['keywordSeach'])){
                    $pagination .= '<a href="properties.php?page=' . $prev . $getString .'">Previous</a>';
                }else{
                    $pagination .= '<a href="properties.php?page=' . $prev . '">Previous</a>';
                }
            }

            if($page != $lastPage){
                $next = $page +1;
                if(isset($_GET['keywordSeach'])){
                    $pagination .= '<a href="properties.php?page=' . $next . $getString . '">Next</a>';
                }else{
                    $pagination .= '<a href="properties.php?page=' . $next . '">Next</a>';
                }
            }
        }

我知道的 $getString 还没有完成。我尝试使用带有 = 符号的爆炸并选择页面部分并将其删除。我还尝试从字符串中删除前 x 个字母。对我来说还没有任何效果。

谢谢

【问题讨论】:

  • 我没太看懂,能不能写一个开始字符串和“结束”字符串的例子(那么,你想做什么)?
  • 只需用下一页/上一页的页码覆盖$_GET['page'],然后再次使用http_build_query 创建一个包含来自$_GET 的所有参数的查询字符串。 (或者,如果您不想直接操作 $_GET 中的值,请先使用parse_str 来获取数组中的所有 GET 参数。)

标签: php html mysql pagination


【解决方案1】:
// make an array with GET variables
$qs = array();

// get all existing GET variables except 'page'
foreach($_GET as $key => $val)
{
    if($key != 'page')
    {
        $qs[] = $key . '=' . $val;
    }
}

//add 'page' on the way you like
$qs[] = 'page=' . $prev;

// make the link
$pagination .= '<a href="properties.php?'.implode('&', $qs).'">Previous</a>';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    • 2016-11-24
    相关资源
    最近更新 更多