How to get query to transfer to subsquent pages when paginating results

前端 未结 2 1456
北恋
北恋 2021-01-25 00:03

I\'ve been going through all the pagination questions and answers on the site, and among all the long-drawn out code and OO solutions, this code is among the shortest and simple

相关标签:
2条回答
  • 2021-01-25 00:43

    I think you have to use the OFFSET token in your query. Like so:

    $query = "SELECT * FROM table ORDER BY title LIMIT $perPage OFFSET $perPage * $page"; 
    

    I hope this helps.

    0 讨论(0)
  • 2021-01-25 00:50

    Not sure why you need to do select count(*) every time. I would suggest doing it like this:

    <?php
    /* establish the connection */
    $mysqli = new mysqli (
                'localhost',  // The host to connect to
                'username',       // The user to connect as
                'password',   // The password to use
                'dbname');     // The default database to query
    
    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s<br />\n", mysqli_connect_error());
        exit();
    }
    
    $perPage = 10;
    $page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
    $startAt = $perPage * ($page - 1);
    
    /* Send a query to the server */
    if ($result = $mysqli->query(
         "SELECT * FROM table ORDER BY title limit $startAt, $perPage")) {
        $rowCnt = $result->num_rows;
        echo "<h3>Page: $page</h3>\n";
    
        /* Fetch the results of the query and show results*/
        while( $row = $result->fetch_assoc() ) {
            printf("%s - %s<br/>\n", $row['orderDate'], $row['orderDescription']);
        }
    
        /* Show next page, previous page links dynamically */
        echo "<p>\n";
        // generate previous page link if current page no is after 1st page
        if ($page > 1)
            printf("<a href='%s?page=%d'>Previous Page</a>&nbsp;&nbsp;&nbsp;\n", 
               $_SERVER["SCRIPT_NAME"], ($page-1));
    
        // generate next page link if we were able to fetch $perPage rows    
        if ($rowCnt == $perPage) 
            printf("<a href='%s?page=%d'>Next Page</a>\n", 
               $_SERVER["SCRIPT_NAME"], ($page+1));
        echo "</p>\n";
    
        /* Destroy the result set and free the memory used for it */
        $result->close();
    }
    
    /* close the connection */
    $mysqli->close();
    ?>
    

    I am using new mysqli extension of php, here is the php mysqli reference documentation

    0 讨论(0)
提交回复
热议问题