Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapisy stronicowania dotyczące kwestii po stronie Klienta

Jak stwierdzono w moich komentarzach.

Możesz wykonać następujące czynności:

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

Powyższe spowoduje zreplikowanie kliknięcia każdego z linków stronicowania.

To, co radzę zrobić dalej, to oddzielić kod PHP i HTML, który generuje twoją listę "wyników" w osobnym pliku.

W ten sposób na stronie, która wyświetla wyniki, możesz po prostu użyć include('path-to-results-file.php'); które będą działać dla żądań innych niż ajax, a następnie możesz zrobić:

Proces.php

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

Powyższe wykryje, czy zostało wykonane żądanie ajax, a jeśli tak, zamiast wyświetlać całą stronę wraz z wynikami, po prostu wyświetli tylko wyniki i paginację.

Zaktualizowano w celu uwzględnienia lepszego wyjaśnienia

Poniżej znajduje się BARDZO prosty przykład tego, co mam na myśli.

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

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

Nowa ścieżka-do-pliku-wyników.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>

Teraz... Kiedy przejdziesz do process.php normalnie przez przeglądarkę lub gdy JavaScript jest wyłączony. Teraz po prostu będzie działać tak samo, jak bez JavaScript.

Kiedy przejdziesz do process.php a następnie kliknij jeden z linków do stronicowania (z włączonym JavaScript), process.php wykryje, że używasz Ajax i odeśle tylko tabelę wyników.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zastąpić string innym stringiem i zachować wielkość liter w php i mysql?

  2. Pobierz sumę kolumny MySQL w PHP

  3. MySQL find_in_set z wieloma ciągami wyszukiwania

  4. Jak wybrać ostatni rekord z tabeli MySQL przy użyciu składni SQL

  5. mysqldb na Pythonie 2.6+ (win32)