Mysql
 sql >> Base de données >  >> RDS >> Mysql

Pagination des enregistrements sur le problème côté client

Comme indiqué dans mes commentaires.

Vous pouvez faire ce qui suit :

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

Ce qui précède vous répliquera en cliquant sur chacun des liens de pagination.

Ce que je conseillerais de faire ensuite est de séparer le code PHP et HTML qui génère votre liste de "résultats" dans un fichier séparé.

Ainsi, sur la page qui affiche les résultats, vous pouvez simplement utiliser include('path-to-results-file.php'); qui fonctionnera pour les requêtes non ajax et vous pourrez alors faire :

Processus.php

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

Ce qui précède détecterait si une requête ajax a été faite et si c'est le cas, au lieu d'afficher toute la page, y compris les résultats, il n'affichera que les résultats et la pagination.

Mise à jour pour inclure une meilleure explication

Vous trouverez ci-dessous un exemple TRÈS simple de ce que je veux dire.

Processus actuel.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>

Nouveau 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>

Nouveau chemin vers le fichier de résultats.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>

Maintenant... Lorsque vous accédez à process.php normalement via votre navigateur, ou lorsque javascript est désactivé. Cela fonctionnera simplement de la même manière que sans Javascript maintenant.

Lorsque vous accédez à process.php puis cliquez sur l'un des liens de pagination (avec javascript activé), process.php détectera que vous utilisez Ajax et ne renverra que le tableau des résultats.