Mysql
 sql >> Database >  >> RDS >> Mysql

Impaginare i record sul problema lato client

Come affermato nei miei commenti.

Potresti fare quanto segue:

$(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');
            }
        });
    });
});

Quanto sopra ti replicherà facendo clic su ciascuno dei collegamenti di impaginazione.

Quello che consiglierei di fare dopo è separare il codice PHP e l'HTML che genera l'elenco dei "risultati" in un file separato.

In questo modo, nella pagina che mostra i risultati, puoi semplicemente usare include('path-to-results-file.php'); che funzionerà per richieste non Ajax e quindi potresti fare:

Process.php

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

Quanto sopra rileverebbe se è stata effettuata una richiesta ajax e in tal caso, invece di visualizzare l'intera pagina compresi i risultati, visualizzerà semplicemente solo i risultati e l'impaginazione.

Aggiornato per includere una spiegazione migliore

Di seguito è riportato un esempio MOLTO semplice di ciò che intendo.

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

Nuovo process.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>

Nuovo percorso-file-dei-risultati.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>

Ora... Quando vai su process.php normalmente tramite il tuo browser o quando javascript è disabilitato. Funzionerà semplicemente allo stesso modo in cui funziona senza Javascript ora.

Quando vai su process.php e poi clicca su uno dei link di impaginazione (con javascript abilitato), process.php rileverà che stai usando Ajax e rispedirà solo la tabella dei risultati.