【问题标题】:PHP Pagination, Page Number Keeps Appending to URLPHP分页,页码不断附加到URL
【发布时间】:2014-05-09 18:17:51
【问题描述】:

我有一个分页系统,要求在 URL 中包含页码。问题是指向下一页的链接会抓取“当前网址”,而该网址已经包含上一页的页码,例如:

分页链接获取当前 URL http://localhost/search/ 并附加其页码,结果:http://localhost/search/1http://localhost/search/2 等。 在下一页,以下分页链接抓取当前 URL,其中可能已经有页码!所以它再次追加 http://localhost/search/1/2 并且一切都中断了。

我真的不想为此使用会话。使用 CodeIgniter base_url() 不会返回我需要的控制器和函数,如果我使用 $_SERVER['PHP_SELF'] 那么它还包括域。有什么想法可以实现吗?

编辑

示例代码:

foreach ($reviews as $page){
        echo "<li><a href='".current_url()."/$page'>$page</a></li>";
}

echo '</ul>';

【问题讨论】:

  • 下一页的锚标记是什么样的?
  • 您现在可能想要添加生成链接的代码,它可以帮助某人想出一个易于实施的解决方案。
  • @joseph4tw &lt;a href="http://localhost/search/top-rated/1&lt;/a&gt;
  • 使用相对链接怎么样? (例如echo "&lt;li&gt;&lt;a href='../$page'&gt;$page&lt;/a&gt;&lt;/li&gt;";?如果一开始没有指定页面,可能(可能会)导致问题 - 但您可以首先使用if 或链接到..../search/1 来解决这个问题。
  • 你知道'current_url'的格式吗?即它是否总是有页码,或者您可以轻松识别您需要的“基础部分”,然后去掉多余的部分。然后你附加你的页码信息。

标签: php codeigniter pagination


【解决方案1】:

您可以将您的链接替换为相对链接:

echo "<li><a href='../$page'>$page</a></li>";

这假定页面是 URL 的最后一部分,如果没有指定页面(假设为 1),则需要特殊处理。

可能的处理方式

  • 使用if 来查看是否指定了页面(如果是,请使用相对链接,如果不是像之前那样简单地附加下一个页码)。

  • 在搜索时通过附加/1 显式链接到第一页。

【讨论】:

  • +1 不错。如果有人想为他们的链接指定完整的 URL,我会保留我的答案。
【解决方案2】:

来自此处的 CI 文档:

http://ellislab.com/codeigniter/user-guide/helpers/url_helper.html

你能做这样的事情吗?

foreach ($reviews as $page){
        echo "<li><a href='".site_url("url/to/results")."/$page'>$page</a></li>";
}

【讨论】:

  • 他已经开始工作了,请参阅原始问题的 cmets。但我不妨将其发布为答案,以便 OP 可以接受,抱歉我还没有。
  • @ccKep 啊,我明白了。谢谢。
猜你喜欢
  • 1970-01-01
  • 2020-10-31
  • 2015-01-12
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
  • 2021-02-14
  • 1970-01-01
  • 2013-03-11
相关资源
最近更新 更多