10/10/2018, 00:13

PHP/MySQL: Show table ra nhiều trang ???

Em có 1 table khoảng 70 rows, em muốn in table này ra sao cho mỗi lần in là 20 rows.

Trên trang in ra có 2 nút để lựa chọn: Previous và Next, ấn Next để view 20 trang tiếp theo, ấn Previous để view 20 trang trước đấy.

Ai chỉ em ý tưởng để làm với, nếu nói cụ thể được thì càng tốt.

Em xin cảm ơn.
TheHeTre viết 02:25 ngày 10/10/2018
Có rất nhiều chủ đề về phân trang rồi. Bạn chịu khó tìm kiếm trước nhé.
rocknet viết 02:25 ngày 10/10/2018
nhiều thì nhiều thật, nhưng ko hiểu, có ai giải thích code phân trang đó đc ko ?
phamduyvt viết 02:15 ngày 10/10/2018
Tóm tắt như thế này
các số liệu cần thiết
t_row: Tổng số dòng (70) lấy từ database
n_row: số dòng trên 1 trang (20)
n_page: số trang (t_row/n_row(+1 nếu có dư))
c_page: trang hiện tại(mặc định là 1,1<=c_page<=n_page)

<?
$if(!$c_page)
$c_page=1;
$f_row=($c_page-1)*20;
$sql="select * from $table where......limit $f_row,20";
//thêm mấy câu lệnh query vào đây và trình bày dữ liệu
//trình bày bằng table cho đẹp
?>
Đặt link tới trang trước-sau như sau
<a href="?c_page=<?echo max($c_page-1,0);?>&thamsokhac=value">Previous</a>
<a href="?c_page=<?echo min($c_page+1,$n_page);?>&thamsokhac=value">Next</a>
htvu viết 02:17 ngày 10/10/2018
Chủ topic hiểu ý bạn phamduyvt nói không nhỉ ? nếu vẫn chưa hiểu thì tôi sẽ giải thích "lý thuyết chi tiết" cho
phamduyvt viết 02:30 ngày 10/10/2018
đó chỉ là cách tóm tắt thuật toán, chứ trình bày chi tiết thì dài lắm, nhưng chỉ cần hiểu bí nhiêu là làm tốt rồi
nemo2007 viết 02:26 ngày 10/10/2018
Em hiểu ý tưởng của anh phamduyvt, có điều em chưa hiểu chỗ tạo 2 link Previous và Next lắm. Anh có thể giải thích cụ thể hơn dc ko?

Ví dụ file của em là view_table.php, vậy 2 câu lệnh tạo link Previous, Next viết chính xác sẽ như thế nào?

[=========> Bổ sung bài viết <=========]

Được gửi bởi nemo2007
Em hiểu ý tưởng của anh phamduyvt, có điều em chưa hiểu chỗ tạo 2 link Previous và Next lắm. Anh có thể giải thích cụ thể hơn dc ko?

Ví dụ file của em là view_table.php, vậy 2 câu lệnh tạo link Previous, Next viết chính xác sẽ như thế nào?
Đây là đoạn code của em nhưng chưa chạy, check dùm em với:

//======================================
<html>
<head>
<title> Students </title>
</head>

<?php
$SERVER = "localhost";
$USERNAME = "root";
$PASSWORD = "password";
$DATANAME = "database_1";
$conn = mysql_connect($SERVER, $USERNAME, $PASSWORD);

mysql_select_db($DATANAME);
$t_row = mysql_num_rows("table_1");
$n_row = 20;
$n_page = ceil($t_row / $n_row);

$if(!$c_page)
$c_page=1;
$f_row=($c_page-1)*20;
$sql=mysql_query("select * from table_1 limit $f_row,20");
?>

<table border=1>
<tr>
<td> ID </td>
<td> Name </td>
<td> Age </td>
</tr>
<? while($row=mysql_fetch_row($sql))
{
?>
<tr>
<td>
<?echo "$row[0]";?>
</td>
<td>
<?echo "$row[1]";?>
</td>
<td>
<?echo "$row[2]";?>
</td>
</tr>
<?
}
?>
</table>
<br><br>

<a href="?c_page=<?echo max($c_page-1,0);?>&thamsokhac=value">Previous</a>
<a href="?c_page=<?echo min($c_page+1,$n_page);?>&thamsokhac=value">Next</a>
</html>
//==========================================

[=========> Bổ sung bài viết <=========]

Ok rồi, merci "bóp ku" anh phamduyvt nhé !!!
rocknet viết 02:14 ngày 10/10/2018
PreviousNext rồi, làm sao để nó hiển thị số trang nữa hã bạn ???
Giống như là: Previous 1|2|3|4 | Next á ??
vistaboy viết 02:25 ngày 10/10/2018
bạn ơi,code phân trang là default rồi,bạn không cần hiểu làm gì,người ta đã viết tốt rồi,bạn chỉ muốn làm được cho chạy thì copy trên mạng về sửa lại thôi,còn bạn muốn nghiên cứu thì nên hiểu...hi!!!!!
phamduyvt viết 02:15 ngày 10/10/2018
Được gửi bởi rocknet
PreviousNext rồi, làm sao để nó hiển thị số trang nữa hã bạn ???
Giống như là: Previous 1|2|3|4 | Next á ??
<a href="?c_page=<?echo max($c_page-1,0);?>&thamsokhac=value">Previous</a>
<?for($i=1;$i<=$n_page;$i++)
echo "<a href='?c_page=$i&thamsokhac=value'>$i</a>";
?>
<a href="?c_page=<?echo min($c_page+1,$n_page);?>&thamsokhac=value">Next</a>

[=========> Bổ sung bài viết <=========]

Được gửi bởi nemo2007
................
<?echo "$row[0]";?>
ghi <?=$row[0]?> nhanh gọn hơn
Bài liên quan
0