• websoft VietnamTài nguyên
    Học thiết kế website
    • Thuật toán Phân trang PHP

      Điều kiện trước khi đọc bài viết: 1. Bạn phải biết cách kết nối vào DB. 2. Bạn đã tạo sẵn 1 table và table này có chứa nhiều thông tin để chờ... phân trang

       Bạn tạo file list.php (Hay tạo file nào đó cũng được) có code hoàn chỉnh như sau:

       CODE

      $page = isset ( $_GET["page"] ) ? intval ( $_GET["page"] ) : 1;

      $rows_per_page = 20;

      $page_start = ( $page - 1 ) * $rows_per_page;
      $page_end = $page * $rows_per_page;

      $sql_query = mysql_query("SELECT * FROM table_name");

      $number_of_page = ceil ( mysql_num_rows( $sql_query ) / $rows_per_page );

      if ( $number_of_page > 1 )
      {
      $list_page = " Trang: ";

      for ( $i = 1; $i <= $number_of_page; $i++ )
      {
      if ( $i == $page )
      {
      $list_page .= " [ {$i} ] ";
      }
      else
      {
      $list_page .= " {$i} ";
      }
      }
      }

      $i = 0;

      while ( $result = mysql_fetch_array ( $sql_query ) )
      {
      if ( $i >= $page_start )
      {
      print "";
      }

      $i++;

      if ($i >= $page_end)
      {
      break;
      }
      }

      print <<

      {$list_page}

      EOF;

      ?>
      Giải thích từng đoạn:

      1. Cú pháp của đoạn này là:
      Page = kiểm tra xem biến page có tồn tại hay không [?]
      nếu tồn tại thì lấy giá trị của biến này và dùng hàm intval lọc dể nhận được giá trị an toàn [:]
      còn nếu không thì sẽ có giá trị mặc định là 1

      $page = isset ( $_GET["page"] ) ? intval ( $_GET["page"] ) : 1;

      2. Số dòng trên 1 trang

      $rows_per_page = 20;

      3. Tính số dòng ở trang mở đầu dựa theo biến $page

      $page_start = ( $page - 1 ) * $rows_per_page;

      4. Tính số dòng ở trang cuối dựa theo biến $page

      $page_end = $page * $rows_per_page;

      Ví dụ về trang mở đầu và trang cuối theo công thức trên:
      Giả sử trang đang xem hiện giờ là 1, ta đc: $page_start = (1 - 1) * 20 = 0
      Còn $page_end = 1 * 20 = 20, vậy ta có giá trị 0 là mở đầu và 20 là kết thúc

      5. Truy xuất vào table_name

      $sql_query = mysql_query("SELECT * FROM table_name");

      6. Tính toán số trang, cách làm như sau:
      "mysql_num_rows( $sql_query )" là lấy tổng số dòng của table đã truy xuất [1]
      "$rows_per_page" là bằng 20 (giá trị mà ta đặt ở trên) [2]
      Lấy [1] chia cho [2] ta sẽ ra được số trang
      Để làm tròn các giá trị từ (x.1 -> x.9 thành 1+x) ta dùng hàm ceil()
      CODE
      $number_of_page = ceil ( mysql_num_rows( $sql_query ) / $rows_per_page );
      src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

      7. Nếu số trang lớn hơn 1 thì sẽ tiến hành liệt kê các trang
      CODE
      if ( $number_of_page > 1 )
      {
      $list_page = " Trang: ";

      // Tiến hành in từng trang
      for ( $i = 1; $i <= $number_of_page; $i++ )
      {
      // Nếu $i bằng $page hiện giờ sẽ in đậm để nhận biết đang xem trang nào
      if ( $i == $page )
      {
      $list_page .= " [ {$i} ] ";
      }
      // Ngược lại...
      else
      {
      $list_page .= " {$i} ";
      }
      }
      }
      src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

      8. Đặt biến $i bằng 0

      $i = 0;

      9. Liệt kê tất cả các dòng trong 1 table
      CODE
      while ( $result = mysql_fetch_array ( $sql_query ) )
      {
      // Nếu như số dòng liệt kê lớn hơn hoặc bằng $page_start thì sẽ in tiếp tục
      if ( $i >= $page_start )
      {
      print $result[noidung]; // Với field noidung là do bạn đặt, ở đây L chỉ ví dụ
      }

      // Gia tăng giá trị $i theo từng dòng
      // Lúc đầu ta đặt biến $i là 0, vậy nếu có 4 dòng thì biến $i sẽ gia tăng cho đến khi bằng 4
      $i++;

      // Nếu như số dòng đang liệt kê lớn hơn $page_end thì sẽ kết thúc vòng lặp bằng "break"
      if ($i >= $page_end)
      {
      break;
      }
      }
      src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

      10. Ở trên ta đã nạp nội dung cho biến $list_page, bây giờ thì in nó ra: (Design what to do )
      CODE
      print <<
      {$list_page}

      EOF;

x
thi ảnh cho bé

Thi ảnh cho bé - saonhi.vn


Hỗ trợ đăng ký: 0988 990 292