【问题标题】:How to generate some links for a paginator in PHP without missing last page?如何在 PHP 中为分页器生成一些链接而不会丢失最后一页?
【发布时间】:2015-04-05 21:45:23
【问题描述】:

生成分页器的代码没有按预期工作,可能是什么问题?

在给定当前页面显示结果的一些数据的情况下,此函数获取分页器的 HTML 链接。 $ruta 是基本 URL,$pagina 是我要为其生成分页链接的当前页面,$limite 是每个页面显示的结果数,$total 是要分页的结果总数。

function generarPaginador($ruta, $pagina, $limite, $total)
{
    // Traducciones
    $textoPrimera = _('Primera');
    $textoUltima = _('Última');

    // Variables para la numeración de los enlaces para paginación
    $primera = 1;
    $ultima = ceil($total / $limite); //I was using floor but thanks to the answer I could verify that ceil gives me the correct pagination links for the given parameters
    $anterior = $pagina == 1 ? 1 : $pagina - 1;
    $siguiente = ( ( $pagina + 1) > $ultima) ? $ultima : $pagina + 1;

    if ($ultima == 1) {
        return '';
    }

    // ENLACES: Primeros
    $enlaces = '';
    $enlaces .= "<span><a href=\"$ruta?pag=$primera&max=$limite\">$textoPrimera</a></span>";
    $enlaces .= "<span><a href=\"$ruta?pag=$anterior&max=$limite\">&lt;</a></span>";

    // ENLACES: Previos a la página actual
    $i = ( $pagina - 3) > 0 ? $pagina - 3 : 1;
    while ($i < $pagina) {
        $enlaces .= "<span><a href=\"$ruta?pag=$i&max=$limite\">$i</a></span>";
        $i++;
    }

    // ENLACES: Página actual
    $enlaces .= "<span class=\"current\">$pagina</span>";

    // ENLACES: Siguientes a la página actual
    $i = $pagina + 1;
    $tamano = $pagina + 3;
    while (($i <= $ultima ) && ($i <= $tamano)) {
        $enlaces .= "<span><a href=\"$ruta?pag=$i&max=$limite\">$i</a></span>";
        $i++;
    }

    // ENLACES: Últimos enlaces
    $enlaces .= "<span><a href=\"$ruta?pag=$siguiente&max=$limite\">&gt;</a></span>";
    $enlaces .= "<span><a href=\"$ruta?pag=$ultima&max=$limite\">$textoUltima</a></span>";

    return $enlaces;
}

比如我想为第2页生成分页器的链接,总共有37个结果,但是网页只显示10个结果每页。基本网址是 /busqueda/resultados/

如果我将这些参数传递给函数,它将为前 30 个结果的前 3 个页面生成 3 个链接,但它还应该为最后一页生成第 4 个链接(因为每个页面最多包含 10 个,第一个三个包含 10 个,一共 30 个,但第 4 个包含剩余的 7 个,应该有一个链接。

【问题讨论】:

  • 为什么要将结果数传递给函数?
  • 我对数据库表中的一些行进行计数,然后将计数结果传递给此函数,以便它可以为给定的 SQL 查询生成分页器的链接。所以我需要传递结果。

标签: php pagination


【解决方案1】:

这应该就像从地板到天花板一样简单。

【讨论】:

  • 有效!之前没有注意到这一点,我感到很糟糕 ¬¬ 感谢您的回答!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多