sql >> Base de Datos >  >> RDS >> Mysql

Paginar registros en el problema del lado del cliente

Como se indica en mis comentarios.

Podrías hacer lo siguiente:

$(document).ready(function()
{
    $('.paginate').live('click', function(e)
    {
        e.preventDefault();
        var btnPage = $(this);
        $.ajax(
        {
            url : btnPage.attr('href'),
            success : function(resp)
            {
                // replace current results with new results.
                $('#project_section').html(resp);
            },
            error : function()
            {
                window.location.href = btnPage.attr('href');
            }
        });
    });
});

Lo anterior lo replicará haciendo clic en cada uno de los enlaces de paginación.

Lo que recomendaría hacer a continuación es separar el código PHP y el HTML que genera su lista de "resultados" en un archivo separado.

De esta manera, en la página que muestra los resultados, simplemente puede usar include('path-to-results-file.php'); que funcionará para solicitudes que no sean ajax y luego podría hacer:

Proceso.php

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
    include('path-to-results-file.php');
    die();
}

Lo anterior detectaría si se ha realizado una solicitud ajax y, de ser así, en lugar de mostrar toda la página, incluidos los resultados, simplemente mostrará solo los resultados y la paginación.

Actualizado para incluir una mejor explicación

A continuación se muestra un ejemplo MUY simple de lo que quiero decir.

Proceso actual.php

    <?
    // currently contains all of the code required
    // to query the database etc.
?>
<html>
<head>...</head>
<body>
    <!-- header content -->
    <table>
    <?
        // currently contains all of the code required to display
        // the results table and pagination links.
    ?>
    </table>
    <!-- footer content -->
</body>
</html>

Nuevo proceso.php

<?
    if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
    {
        include('path-to-results-file.php');
        die();
    }
?>
<html>
<head>...</head>
<body>
    <!-- header content -->
    <? include('path-to-results-file.php'); ?>
    <!-- footer content -->
</body>
</html>

Nueva ruta-al-archivo-de-resultados.php

<?
    // currently contains all of the code required
    // to query the database etc.
?>
<table>
<?
    // currently contains all of the code required to display
    // the results table and pagination links.
?>
</table>

Ahora... Cuando vayas a process.php normalmente a través de su navegador, o cuando javascript está deshabilitado. Simplemente funcionará de la misma manera que lo hace ahora sin Javascript.

Cuando vas a process.php y luego haga clic en uno de los enlaces de paginación (con javascript habilitado), process.php detectará que está utilizando Ajax y solo devolverá la tabla de resultados.