Tạo phân trang trong PHP sử dụng MYSQL - Lập trình PHP

Wednesday, September 17, 2014
Thường các bạn thấy các website sử dụng phân trang để làm ngắn gọn trang web của mình , Kiểu dạng như phân trang các bài viết trong forum




Cách sử dụng phân trang trong PHP thế nào ?
Sử dụng hàm limit trong PHP  để làm điều này.
Ví dụ:
select * from dangky order by id asc limit $start,$row_per_page

Có nghĩa là bạn sẽ chọn $Start là bắt đầu =0
và $row_per_page = 5 nghĩa là nó sẽ hiển thị từ 0 >5 dữ liệu có trong bảng đăng ký. Như vậy nếu chúng ta quy định là 5 dòng trong trang 1 thì nó sẽ là
select * from dangky order by id asc limit 0,5
Nếu muốn qua trang 2 thì chúng ta sẽ phải tăng giá trị này lên 5 trang tiếp theo là 0+5 và 5+5 (0,10)
OK thử xem qua code sau nhé.
CODE PHP PHÂN TRANG
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Untitled Document</title>

<style>

td

{

 padding:5px;

}

table

{  border-color:#FFFFCC;

}

body

{

 font-family:Arial, Helvetica, sans-serif;

}

.phantrang

{

 border:1px  #FFFFCC solid;

 padding:5px;

 background:#cccc;

 width:20px;

 float:left;

 font-weight:bold;

}

</style>

</head>

<body>

<?php

$conn=mysql_connect("localhost","root","123") or die("Khong the ke noi");

mysql_select_db("email",$conn) or die ("Khong ket noi dc CSDL");

$tin=mysql_query("select id from dangky");

?>

<?php 

$row_per_page=5 ; //Số dòng trên 1 trang

//tính số dòng cần hiển thị

$rows=mysql_num_rows($tin);

//tính số trang cần để hiển thị

if ($rows>$row_per_page) $page=ceil($rows/$row_per_page); 

else $page=1; //nếu số dòng trong CSDL nhỏ hơn hoặc bằng số dòng trên 1 trang thì chỉ có 1 trang để hiển thị

if(isset($_GET['start']) && (int)$_GET['start'])

     $start=$_GET['start']; //dòng bắt đầu từ nơi ta muốn lấy

else $start=0;

$sql=mysql_query("select * from dangky order by id asc limit $start,$row_per_page"); //bắt đầu lấy dữ liệu (^)_(^)

?>

<table border="1" cellspacing="0" cellpadding="0">

<tr>

 <td bgcolor="#FFFFCC">Name</td>

 <td bgcolor="#FFFFCC">Email</td>

</tr>

<?php while($row=mysql_fetch_array($sql))

{?> 

  <tr>

    <td><?php echo $row[name] ?></td>

 <td><?php echo $row[_email] ?></td>

  </tr>



<?php 

}  ?>

</table>

<?php

//bắt đầu phân trang

$page_cr=($start/$row_per_page)+1;

for($i=1;$i<=$page;$i++)

{

 if ($page_cr!=$i) echo "<div class='phantrang'>"."<a href='index.php?start=".$row_per_page*($i-1)."'>$i&nbsp;</a>"."</div>";

 else echo "<div class='phantrang'>".$i." "."</div>";

}

?>



</body>

</html>

Trên đây mình đã hướng dẫn các bạn làm phân trang đơn giản trong PHP và có sử dụng MYSQL để load dữ liệu hy vọng sẽ giúp ích được cho các bạn