Thứ Bảy, 26 tháng 10, 2013

Ứng dụng phân trang trong PHP

Khi xây dựng website có nhiều nội dung thì việc phân trang là rất quan trọng do vậy ngay từ khi bắt đầu học php từ bước cơ bản phải nẵm rõ ứng dụng này,có như vậy thì thiết kế website mới chất lượng và phù hợp với yêu cầu của khách hàng.
php_mysql_database

Phân trang php là là thủ thuật được sử dụng bởi rất nhiều trang web và là tính năng cũng rất quan trọng. Đặc biệt với những trang web có nhiều nội dung cần hiển thị thì phân trang là phần không thể thiếu. Bạn không thể truy xuất tất cả dữ liệu mình có và hiển thị ra cùng một lúc được, cho nên những trang web hoạt động dựa trên CSDL phải được phân trang để hiển thị kết quả.

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.

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

1.Cú pháp của doạ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 để nhận được giá trị an toàn

còn nếu không thì sẽ có giá trị là 1

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

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

<?php

$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 = " <td> Trang: </td>";

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

} else {
$list_page .= "<td><a href='list.php?page={$i}'> {$i} </a></td>"; } }
}
$i = 0;

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

print <<<EOF
<table cellspacing="0" cellpadding="0" border="0">
<tr>
{$list_page}
</tr>
</table>
EOF;

?>


$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 );


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 = " <td> Trang: </td>";


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

Không có nhận xét nào:

Đăng nhận xét