XtGem Forum catalog
↓↓xuống cuối trang↓↓
Chào mừng bạn đến với wap DinhLoi.XtGem.Com | Chúc bạn có 1 năm mới vui vẻ tốt lành hạnh phúc! Hãy giới thiệu website này cho bạn bè nhé!img
DinhLoi.XtGem.Com =>> CaFe9x.Gq
Bạn đến từ quốc gia: United StatesUnited States



Hôm nay ngày
14.03.25/19:31
img- Hi. Xin chào! Mozilla/5.0
logo
.
HOMECHÁTTruyệnFORUM
logo

Chatbox|Admin nhận làm wap/web, giá cả thương lượng... Thông tin admin tại mỗi bài viết.
Home · Bang hội ·
* Đăng Nhập hoặc Đăng Kí
để sử dụng hết chức năng của diễn đàn.
Hi, Khách!
HomeBang hội » Wapmaster » PHP » Thuật toán Phân trang PHP
Xuống dưới » Thuật toán Phân trang PHP
avatar by Pham_loi Pham_loi
Chức vụ:
17:53:17, 09-08-2015

Đ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:
<?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;
?>

Copy code

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
<?php
$page 
= isset ( $_GET["page" ) ? intval $_GET["page" ) : 1;
?>

Copy code

2. Số dòng trên 1 trang
<?php
$rows_per_page 
20;
?>

Copy code

3. Tính số dòng ở trang mở đầu dựa theo biến $page
<?php
$page_start
=($page-)*$rows_per_page;
?>

Copy code

4. Tính số dòng ở trang cuối dựa theo biến $page
<?php
$page_end 
$page $rows_per_page;
?>

Copy code

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
<?php
$sql_query
=mysql_query("SELECT * FROM table_name");
?>

Copy code

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()
<?php
$number_of_page
=ceil(mysql_num_rows($sql_query)/$rows_per_page);
?>

Copy code

7. Nếu số trang lớn hơn 1 thì sẽ tiến hành liệt kê các trang
<?php
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.=" <td>[ <b>{$i}</b> </td> ";
}
// Ngược lại…
else
{
$list_page.="<td><a href=’list.php?page={$i}’> {$i} </a></td>";
}
}
}
?>

Copy code

8. Đặt biến $i bằng 0
$i = 0;
9. Liệt kê tất cả các dòng trong 1 table

<?php
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;
}
}
?>

Copy code

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)
<?php
print <<<EOF
<table cellspacing="0"cellpadding="0"border="0">
<tr>
{$list_page}
</tr>
</table>
EOF;
?>

Copy code

Like: 0
Lên trên  Tổng số: 1







Trực Tuyến: Khách: 1
Diễn đàn teen Việt Nam
CopyRight 2014
Tag:
Bạn đến từ:
Share: img img img img img

Thanks To:XtGem
Liên kết:U-ON