Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Paginar registros no problema do lado do cliente


Conforme informado em meus comentários.

Você poderia fazer o seguinte:
$(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');
            }
        });
    });
});

O acima irá replicar você clicando em cada um dos links de paginação.

O que eu aconselharia a fazer a seguir é separar o código PHP e o HTML que gera sua lista de "resultados" em um arquivo separado.

Dessa forma, na página que exibe os resultados, você pode simplesmente usar include('path-to-results-file.php'); que funcionará para solicitações não-ajax e você poderá fazer:

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

O acima detectaria se uma solicitação ajax foi feita e, em caso afirmativo, em vez de exibir a página inteira, incluindo os resultados, ele simplesmente exibirá apenas os resultados e a paginação.

Atualizado para incluir uma explicação melhor

Abaixo está um exemplo muito simples do que quero dizer.

Processo atual.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>

Novo processo.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>

Novo caminho para arquivo 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>

Agora... Quando você for para process.php normalmente através do seu navegador, ou quando o javascript está desabilitado. Ele simplesmente funcionará da mesma maneira que sem Javascript agora.

Quando você vai para process.php e clique em um dos links de paginação (com javascript habilitado), process.php detectará que você está usando Ajax e apenas enviará de volta a tabela de resultados.