我正在为我的网站创建一些分页,除了一件事之外,一切正常。该页面显示来自数据库的列表,可以选择根据您所在的页面点击下一个或上一个,这工作正常。我还有一个搜索功能,它使用带有输入和选择的表单,然后使用 $_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/