Chào các bạn, tớ xin giới thiệu một cách đơn giản để phân trang trong PHP.
Giả sử ta có một CSDL là test với 1 bảng test bao gồm:
1. Trường id( auto_increment)
2. Trường name (varchar)
3. Trường address (varchar)
Câu lệnh truy vấn để hiển thị từng trang là:
select * from test limit $s,$p;
Trong đó $s là số thứ tự đầu tiên của trang thứ n, còn $p là số bản ghi hiển thị trong mỗi trang. Các bạn chú ý là số thứ tự bản ghi bắt đầu từ 0 (chứ không phải là 1)
Ví dụ: để view trang thứ 1 với số bản ghi là 5 thì câu lệnh là:
select * from test limit 0,5;
Đây là code phân trang. Có gì các bạn góp ý cho tớ.
PHP Code:
<?php
//connect den server va co so du lieu
mysql_connect("localhost","admin","admin") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());
//-------------------------------------------------
$qr=mysql_query("select * from test");//query den bang co ten la: test trong CSDL
$n_record=mysql_num_rows($qr);//so ban ghi cua bang
$p=5;//so bang ghi trong 1 trang can hien thi
//-------Ham tinh so trang-------------------------
function num_page()
{
global $n_record;//lay bien toan cuc
global $p;
if($n_record%$p==0)
{
$n_page=$n_record/$p;
return $n_page;
}
else
{
$n_page=($n_record-($n_record%$p))/$p+1;
return $n_page;
}
}
//-------------------------------------------------
function view_page()
{
global $n_record;
for($i=1;$i<=num_page();$i++)
{
echo "<a href='pages.php?n=".$i."'>".$i."</a><";
}
echo "<a href='pages.php?n=all'>All</a>";
}
//-------------------------------------------------
echo "<br>";
$n=$HTTP_GET_VARS***91;'n'***93;;//lay bien n tren trinh duyet
$s=($n-1)*$p; //thu tu cua bang ghi tai trang thu n
if ($n!='all')
{
$qr1=mysql_query("select * from test limit $s,$p") or die (mysql_error());
}
else
{
$qr1=mysql_query("select * from test");
}
//--------Hien thi bang-----------------------------
view_page();
echo "<table border=1 width=100%>";
while($row=mysql_fetch_array($qr1))
{
echo "<tr>";
echo "<td>".$row***91;'id'***93;."</td>";
echo "<td>".$row***91;'name'***93;."</td>";
echo "<td>".$row***91;'address'***93;."</td>";
echo "</tr>";
}
echo "</table>";
view_page();
?>
Bookmarks