PHP |如何从 url 字符串中删除特定字符串

标签 php html mysql pagination

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

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

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

 <?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 个字母。对我来说还没有任何效果。

谢谢

最佳答案

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

关于PHP |如何从 url 字符串中删除特定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32489030/

相关文章:

php - 如何在 Laravel 5.4 中强制删除

php - IE 在第二次中未获取($.get()) 新数据

javascript - 使用 $.ajax 请求将数据发送到服务器

PHP MYSQL 表行点击显示数据详细信息

mysql - 如何将 MYSQL 全文搜索与另一个表连接?

php - 给定行名 (m),在 MySQL 数据库中作为 PHP 查询的一部分,当 (m,n)=x 时查找列名 (n)

php - 如何在 html 表中回显(循环变量的 php)?

javascript - 在 Bootstrap 中隐藏按钮

mysql - 选择 bool 表示行的 ID 是否在另一个表中

php - mysql php,连接到本地主机