【问题标题】:Previous and next link with url in array数组中带有 url 的上一个和下一个链接
【发布时间】:2011-08-19 21:34:36
【问题描述】:

这是我的 php 代码

<?php
$pageOK = array('page0' => 'page0.php',
                  'page1' => 'content1.php',
                  'page2' => 'anotherContent2.php',
                  'page3' => 'anotherpagewithotherlink.php',
                  'page4' => 'blablabla.php',
                  'page5' => 'bleh.php',
                  'page6' => 'foo.php',
                  'page7' => 'bar.php');


  if ( (isset($_GET['projet'])) && (isset($pageOK[$_GET['projet']])) ) {
    include($pageOK[$_GET['projet']]);   
  } 
?>

这将使得“index.php?project=page0”将加载到启用 mod_rewrite 的 url (http://www.example.com/page0/)

请注意,网址不同。我的问题是如何制作 Prev / Next 链接以转到下一个或上一个数组,如果它是第一个隐藏 Prev 链接,最后隐藏 Next 链接。

【问题讨论】:

  • 我的问题是如何制作 Prev / Next 链接以转到下一个或上一个数组,如果它是第一个隐藏 Prev 链接,最后隐藏 Next 链接。你读不出来???这是最后一行!

标签: php arrays pagination


【解决方案1】:
foreach($pageOK as $key => $val){
    if($key == $_GET['projet']){
        $next = key($pageOK);
        break;
    }
    $prev = $key;
}

$next$prev 保存数组键。

【讨论】:

  • 是的,就是这样,这就是我想要的,只是需要一些调整。
  • 我注意到当它到达最后一个数组时,它会循环第一个数组,当它是最后一个数组时,有什么方法可以隐藏 $next 吗?
【解决方案2】:

我认为,只需从 $_GET['project'] 获取数字,减少/增加应该是您想要的。如果您将“page0”更改为数字“0”,则可以简化此问题。

【讨论】:

  • 是的,但是网址现在是 example.com/0,这很糟糕,因为我想用 example.com/programsexample.com/content 等关键字替换那些 page0 到 page7...
  • 所以做一个可能的页面数组并检查页面(www.example.com/page)是否在数组中,如果它会包含它,所以你不必有一个关联数组
【解决方案3】:

所以..实际上这是一个糟糕的结构。您可以将数组放入 pages.php 之类的通用文件中,并在每个页面上包含它。所以 page0.php 的例子

require_once ('pages.php');
$page_name = 'bar.php';
$key = array_search($page_name, $pageOK);

if ($key !== FALSE)
{
    $key_arr = array_keys($pageOK);
    $index = array_search($key, $key_arr);
    if (!empty($index))
    {
      buildLink($key_arr[$index-1], 'Prev page');
    }
    if ($index !== count($key_arr)-1)
    {
            buildLink($key_arr[$index+1], 'Next page');
    }

}

pages.php 的代码

$pageOK = array('page0' => 'page0.php',
                  'page1' => 'content1.php',
                  'page2' => 'anotherContent2.php',
                  'page3' => 'anotherpagewithotherlink.php',
                  'page4' => 'blablabla.php',
                  'page5' => 'bleh.php',
                  'page6' => 'foo.php',
                  'page7' => 'bar.php');

function buildLink($page, $anchor)
{
  if (isset($pageOK($page)))
  {
    print '<a href="$root_url.$page">'.$anchor.'</a>';
  }
}

但是如果你将页面数组移动到数据库并创建页面控制器会更好

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多