anhcodon121
28-11-2009, 10:33
Khi viết web, việc truy cập vào MySQL để lấy dữ liệu và in nó ra trang PHP là chuyện cơm bữa. Nhưng bạn khi sao khi có đến khoảng 100 nghìn bản ghi. Bạn định in 100 nghìn bản ghi đó trong 1 trang PHP và bắt browser còng lưng để cõng một trang PHP với dung lượng cả mấy chục MB?
Để khắc phục chuyện đó, chúng ta cần phân thành nhiều trang và mỗi trang ta sẽ chỉ cần in ra vài chục records là đủ. Admin cũng đã từng có một bài về vấn đề này nhưng em thấy bác ấy coding rườm rà quá có thể khiến cho các newbie không hiểu. Em mới nghĩ ra được một đoạn code bình dân share cho các bác tham khảo.
<?php
///////////////////////////////////////////
// Code by Thanh Bình
// Email: hero_8490@yahoo.com
// Student of VietNam national university of HCM
////////////////////////////////////////////
function listpage()
{
Include(‘connect.php’)//file connect.php bạn viết lệnh kết nối tới MySQL và chọn database.
$r=mysql_query("select `username` from `member`"); //ví dụ tôi có trường username trong table member.
$totalrows=mysql_num_rows($r);
$pagesize=12;// Số bản ghi trong một trang
$totalpages=ceil($totalrows/$pagesize);
$paging='';//array of list page, ex: <<pre 1 2 3 4 next>>
if($totalrows==0)
{
echo "No entry was found !";
exit;
}
$howpage='';
$howpage=(int)($_GET['pag']);
//lấy giá trị của số trang hiện tại và convete nó sang int nhằm tránh hacker mò mẫm vào thanh address bar. Nếu jang hồ cố tình sửa giá trị thì nó tự động trở về 0
$host=$_SERVER['PHP_SELF'];
if(!$howpage || $howpage>$totalpages)
{
$howpage=1;
}
//Start printing list
$k=$howpage-1;
if($k<1)
{
$paging.="<< ";
}else{
$paging.="<a href=\"$host?pag=$k\">"."<<"."</a> ";
}
for($i=$howpage;$i<=$howpage+3;$i++)
{
if($i<=$totalpages){
if($i==$howpage)
{
$from=(($howpage-1)*$pagesize);
$r=mysql_query("select `username` from `member` limit $from, $pagesize");
while($row=mysql_fetch_array($r))
{
//Tùy yêu cầu sử dụng, ta sẽ thể hiện nội dung truy vấn được trong vòng lặp while này.
echo "<pre>";
echo $row['username'];
echo "</pre>";
}
}
$paging.="<a href=\"$host?pag=$i\">".$i."</a> ";
}
}
$p=$howpage+4;
if($p>=$totalpages)
{
$paging.=">> ";
}else{
$paging.="<a href=\"$host?pag=$p\">".">>"."</a> ";
}
echo $paging;
//Biến paging chứa một mảng số thứ tự các trang và link của nó. Bạn có thể echo nó ở bất cứ đâu bạn muốn.
}
?>
Để khắc phục chuyện đó, chúng ta cần phân thành nhiều trang và mỗi trang ta sẽ chỉ cần in ra vài chục records là đủ. Admin cũng đã từng có một bài về vấn đề này nhưng em thấy bác ấy coding rườm rà quá có thể khiến cho các newbie không hiểu. Em mới nghĩ ra được một đoạn code bình dân share cho các bác tham khảo.
<?php
///////////////////////////////////////////
// Code by Thanh Bình
// Email: hero_8490@yahoo.com
// Student of VietNam national university of HCM
////////////////////////////////////////////
function listpage()
{
Include(‘connect.php’)//file connect.php bạn viết lệnh kết nối tới MySQL và chọn database.
$r=mysql_query("select `username` from `member`"); //ví dụ tôi có trường username trong table member.
$totalrows=mysql_num_rows($r);
$pagesize=12;// Số bản ghi trong một trang
$totalpages=ceil($totalrows/$pagesize);
$paging='';//array of list page, ex: <<pre 1 2 3 4 next>>
if($totalrows==0)
{
echo "No entry was found !";
exit;
}
$howpage='';
$howpage=(int)($_GET['pag']);
//lấy giá trị của số trang hiện tại và convete nó sang int nhằm tránh hacker mò mẫm vào thanh address bar. Nếu jang hồ cố tình sửa giá trị thì nó tự động trở về 0
$host=$_SERVER['PHP_SELF'];
if(!$howpage || $howpage>$totalpages)
{
$howpage=1;
}
//Start printing list
$k=$howpage-1;
if($k<1)
{
$paging.="<< ";
}else{
$paging.="<a href=\"$host?pag=$k\">"."<<"."</a> ";
}
for($i=$howpage;$i<=$howpage+3;$i++)
{
if($i<=$totalpages){
if($i==$howpage)
{
$from=(($howpage-1)*$pagesize);
$r=mysql_query("select `username` from `member` limit $from, $pagesize");
while($row=mysql_fetch_array($r))
{
//Tùy yêu cầu sử dụng, ta sẽ thể hiện nội dung truy vấn được trong vòng lặp while này.
echo "<pre>";
echo $row['username'];
echo "</pre>";
}
}
$paging.="<a href=\"$host?pag=$i\">".$i."</a> ";
}
}
$p=$howpage+4;
if($p>=$totalpages)
{
$paging.=">> ";
}else{
$paging.="<a href=\"$host?pag=$p\">".">>"."</a> ";
}
echo $paging;
//Biến paging chứa một mảng số thứ tự các trang và link của nó. Bạn có thể echo nó ở bất cứ đâu bạn muốn.
}
?>