PHP URL变量追加

时间:2018-01-18 06:08:20

标签: php url pagination

希望这是一个简单易行的问题。我已经看过多个例子,并知道如何将变量附加到URL(即mydomain.com/index.php?id=1&stat=0),但我的问题是:

如果我的网站上有一个页面中已有变量(即mydomain.com/tickets.php?stat=Open),我该如何将页码附加到该网址的末尾(即mydomain.com/tickets.php?stat=Open&page=2)。这是用于包含搜索和选择功能的表格的分页目的,包括搜索和选择功能(选择打开,关闭或所有票证,并搜索特定的票证号码)。

我已经使用谷歌进行了多次搜索,并且干涸了,因为大多数有关此问题的主题都是您使用来自get go的变量对url进行硬编码,而不是追加它们。我可能只是使用了错误的搜索参数,并且不确定要搜索的内容。

非常感谢您对此的任何帮助或见解,谢谢。

请注意我希望仅在PHP,HTML和MySQLi中执行此操作。我想尽可能避免在我们的浏览器上禁用这些功能的客户端使用javascript或ajax。

2 个答案:

答案 0 :(得分:0)

使用这种方式: -

<?php
    $domain = "mydomain.com";

    $page = "tickets.php?";


    $full_page_url = $domain.'/'.$page;

    $arr = array('stat' => 'Open', 'page' =>2); 

    $add= http_build_query($arr); 

    $correct_url = $full_page_url. $add;

    echo $correct_url;
 ?>
  

输出: - mydomain.com/tickets.php?stat=Open&page=2

答案 1 :(得分:-1)

我会这样做:

$page = 2;

$url = 'mydomain.com/tickets.php?stat=Open';

if( false !== strpos($url, '?')){
    //if url has a ? split it.
    $arr_url = explode('?', $url); 
    //convert query string to array, $array=['stat'=>'Open']
    parse_str($arr_url[1], $array);
    //add or replace page by array key
    $array['page'] = $page;
    //convert it back to a query string.
    $query = http_build_query($array);

   print_r($query);
}

输出

stat=Open&page=2

$query放回$arr_url[0]只是一个简单的问题我会留给你。但我会给你一个提示$arr_url[0].'?'.$query

这样做的好处是,您不必担心在page之后page之后添加page的情况......

像这样:

 mydomain.com/tickets.php?stat=Open&page=1&page=2&page=3

你不能简单地将它连接到url的末尾,并且它可能与解析查询字符串一样难以删除它。

作为旁注,您可以使用$_GET,但其中的乐趣在于,因为$_GET是已经解析为数组的查询字符串(因此您可以跳过parse_str)。但它可能不是在请求上,例如,如果您只是从字符串构建链接。

所以我想我会用parse_str来展示它来掩盖“更难”的情况。

如果你只是建立一堆除了page部分之外的所有网址,最后一件事。显而易见的答案是设置一个基本网址,然后循环输出数字。

 $url = 'mydomain.com/tickets.php?stat=Open';

 $pagedUrls = [];

 $numberPages = 10;

 for($i=1; $i<=$nubmerPages; $i++){
    $pagedUrls[] = $url.='&page='.$i;
 }

或者你有多少页面。

在你的问题中,你的确想要做的事情真的不是那么清楚......

希望有所帮助。