Hướng dẫn phân trang bằng PHP

Thảo luận trong 'Hướng Dẫn' bắt đầu bởi TechBuba, 20/3/15.

  1. TechBuba Nhà Báo (Báo Đời)

    Đa số các trang Web viết bằng PHP đều có phân trang. Code phân trang bằng PHP cũng rất quang trọng nó giúp bạn hạn chế trong việc lấy cùng lúc nhiều dữ liệu từ CSDL ra cùng lúc. Ngoài ra phân với PHP còn có thể giúp các bạn thể một trang Web trông chuyên nghiệp hơn.

    Hướng dẫn phân trang bằng PHP:
    Code này do mình tự viết có chú thích rõ từng dòng các bạn có thể đọc để tham khảo các kết nối MySQL bạn thay đổi cho phù hợp với cấu trúc CSDL của bạn!


    PHP:
    <?php
    $db_host 
    "localhost";
    $db_name "db_vinahost_email";
    $db_user "root";
    $db_pass "";
    // mysqli connect
    $mysqli = new mysqli($db_host$db_user$db_pass$db_name);
    if (
    $mysqli->connect_errno) {
        exit(
    'Lỗi Kết Nối CSDL!');
    }
    // Tổng số bài viết trên mỗi trang.
    $number_post 10;


    // Lấy trang người dùng đang xem thông qua biến GET['page']
    if ( isset($_GET['page']) and  preg_match("/^[0-9]+$/i",$_GET['page'])){
        
    $page $_GET['page'] ;
    }
    else {
        
    $page 0;
    }


    // Số bài viết có trong CSDL
    $result $mysqli->query("SELECT * FROM `url`"); // query lấy bài viết mà bạn muốn phân trang!
    $count_post $result->num_rows//  Đến tổng số bài viết trang database


    /* Xem số trang có thể hiển thị được với số bài viết
    * VD: Ta có 20 bài mỗi trang hiện 10 bài thì ta được 2 trang.
    */
    $page_number $count_post/$number_post;


    /* Query lấy dữ liệu hiển thị trên trang
    * Dựa vào biến GET['page']
    * Ta dùng hàm LIMIT x,y
    * x là bài viết số x VD: Ta lấy bài 20 trể đi thì x = 20
    * y là số bài viết cần lấy VD: Ta lấy 10 bài kể từ bài 20 thì y =10
    */
    $result $mysqli ->query("SELECT `url_id`,`request_url` FROM `url` ORDER BY `url_id` DESC LIMIT ".($page*$number_post).",".$number_post.";");
    $value = array(); // array chứa thông tin bài viết
    while ($tmp $result->fetch_assoc()) {
        
    $value[$tmp['url_id']] = $tmp['request_url'];
    }

    /* Hiển thị thông tin bài viết
    * Ở trên mình đã query dữ liệu trang hiện tại bây giờ chỉ cần hiển thị mà thôi :D
    */
    foreach($value as $key=>$tmp){
        echo 
    $key." => ".$tmp."<br />";
    }
    /* Hiển thì số trang.
    * Dựa vào biết $page_number
    */
    for ( $page 0$page <= $page_number$page ++ )
    {
        echo 
    "<a href='page.php?page={$page}'>{$page}</a> \t";
    }
    ?>
    Chúc các bạn thành công!
     
     
  2. Bình Luận Bằng Facebook

  3. dong2403

    dong2403 Thành Viên Mới

    cám ơn bác
     
  4. neolasdo

    neolasdo Thành Viên Mới

    thank bác nhiều