sql >> Databáze >  >> RDS >> Mysql

Stránkování záznamů na straně klienta

Jak je uvedeno v mých komentářích.

Můžete udělat následující:

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

Výše uvedené bude replikovat kliknutí na každý ze stránkovacích odkazů.

Dále bych doporučil oddělit kód PHP a HTML, který generuje váš seznam „výsledků“, do samostatného souboru.

Tímto způsobem můžete na stránce, která zobrazuje výsledky, jednoduše použít include('path-to-results-file.php'); který bude fungovat pro non-ajax požadavky a pak byste mohli udělat:

Process.php

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

Výše uvedené by zjistilo, zda byl proveden požadavek ajax, a pokud ano, místo zobrazení celé stránky včetně výsledků jednoduše zobrazí pouze výsledky a stránkování.

Aktualizováno, aby obsahovalo lepší vysvětlení

Níže je VELMI jednoduchý příklad toho, co mám na mysli.

Aktuální proces.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>

Nový proces.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>

Nová cesta k souboru s výsledky.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>

Nyní... Když přejdete na process.php obvykle prostřednictvím vašeho prohlížeče, nebo když je zakázán javascript. Jednoduše to bude fungovat stejně jako nyní bez Javascriptu.

Když přejdete na process.php a poté klikněte na jeden z odkazů stránkování (s povoleným javascriptem), process.php zjistí, že používáte Ajax, a pošle zpět pouze tabulku výsledků.




  1. Vrátit seznam tabulek a pohledů na SQL Server pomocí T-SQL (sp_tables)

  2. Použití SQL k určení statistiky počtu slov v textovém poli

  3. Nelze se připojit k MySQL 4.1+ pomocí starého ověřování

  4. Jak odstranit duplicitní záznamy?