10/10/2018, 09:55
Phan trang voi PHP , How?
Toi dang su dung PHP de lam 1 trang tin tuc rat don gian, nhung den phan phan trang (paging) thi co van de, toi da lam nhu trong sach roi nhung van khong ra ket qua, va da tham khao 1 so doan code tren mang nhung van khong cho ra ket qua. Cac ban co doan code nao dể hiểu và chạy tốt không, giúp mình voi.
Bài liên quan
bác phải nói nó ko chạy tốt ở điểm nào để sửa chứ
<head>
<title>My page</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
</style>
<script language=javascript>
//----BEGIN implement for paging----------//s
function GotoPage(iPage) {
document.form1.curPg.value=iPage
document.form1.submit()
}
</script>
</head>
<body >
<form action="phantrang.php" method=post name=form1>
<table width="500" border="0" cellspacing="0" cellpadding="0" >
<tr>
<td valign="top" >
<?php
require("db.ini");
$sotrang=5;
$record=2;
$totalRows = 0;
$paging="";
$stSQL .= " select count(ID_TT) as itemno from tintuc group by ID_TT ";
$result = mysql_query($stSQL,$con);
$totalRows=mysql_num_rows($result);
$maxRows = $record;
$maxPages = $sotrang;
if($totalRows%$maxRows==0)
$totalPages = (int)($totalRows/$maxRows);
else
$totalPages = (int)($totalRows/$maxRows+1);
$curPg=(isset($curPg))?$curPg:1;
if($curPg=="")
$curPg =1;
$curRow = ($curPg-1)*$maxRows+1;
$paging ="Current Page : <font color=red>".$curPg."</font> "."Total pages : <FONT color=red>".$totalPages."</FONT><br> ";
if($totalRows>$maxRows)
{
$start=1;
$end=1;
$paging1 ="";
for($i=1;$i<=$totalPages;$i++)
{ if(($i>((int)(($curPg-1)/$maxPages))* $maxPages) && ($i<=((int)(($curPg-1)/$maxPages+1))* $maxPages))
{
if($start==1) $start=$i;
if($i==$curPg)
$paging1 .= $i." ";
else
$paging1 .= "<a href='javascript:GotoPage(".$i.")'>".$i."</a> ";
$end=$i;
}
}
$paging.= "Go to page : " ;
if($curPg>$maxPages)
$paging .="<a href='javascript:GotoPage(".($start-1).")'>Previous</a> ";
$paging.=$paging1;
if(((($curPg-1)/$maxPages+1)*$maxPages) < $totalPages)
$paging .= "<a href='javascript:GotoPage(".($end+1).")'>Next</a> ";
}
?>
<table border="0" width="100%"><tr><td align=left><b>Search by:
<font color=red>All of Categories</font></b></td>
<td align=right><a href="search.php">Back to Search</a></td>
</tr>
<tr><td align=left><font face="Arial" color="#0066cc">Tổng
số Category tìm thấy <b><font color="#ff0000">
<?php echo $totalRows ?>
</font></b></font></td>
<td align=right> <?php echo $paging?></td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="middle" valign="top" >
<table width="100%" border="0" cellspacing="1" cellpadding="1">
<tr>
<td valign="top">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr valign="center">
<td width="15%" height="14" align="middle"><font face="Arial" color="#ff6600">Category No</font></td>
<td width="45%" height="14"><font face="Arial" color="#ff6600">Category Name</font></td>
<td width="40%" height="14"><font face="Arial" color="#ff6600">Number of Items</font></td>
</tr>
<tr valign="top">
<td colspan="7" align="middle">
<hr noshade size="1">
</td>
</tr>
<?php
if($totalRows>0)
{
$i=0;
$low=$curRow;
$curRow=1;
while (($row = mysql_fetch_array ($result))&&($curRow<=$totalRows) && ($curRow <= $curPg*$maxRows))
{
$curRow++;
if($curRow>$low)
{
$cateid=$row["ID_TT"];
$catename=$row["TITLE"];
$itemno=$row["itemno"];
$i+=1;
?>
<tr valign="top">
<td align="middle"><font face="Arial" color="#0066cc">
<?php echo $cateid?>
</font> </td>
<td ><font face="Arial" color="#0066cc">
<A href="listofitem.php?cateid=<?php echo $cateid?>&catename=<?php echo $catename?>">
<?php echo $catename?>
</A></font></td>
<td ><font face="Arial" color="#0066cc">
<?php echo $itemno?>
</font></td>
</tr>
<?php
}}
}else{
?>
<tr valign="top">
<td width="5%" align="middle"> </td>
<td colspan=6 valign=center align="center"><b><font face="Arial" color="#FF0000">Oop!
Category not found! </font></b></td>
</tr>
<?php
}
?>
</table>
</td>
</tr>
<tr>
<td colspan=6>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td colspan=2>
<hr noshade size="1">
</td>
</tr>
<tr>
<td align="left" valign="center"><font face="Arial" color="#0066cc">Tổng
số Category tìm thấy <b><font color="#ff0000">
<?php echo $totalRows?>
</font></b></font></td><td align=right><font face="Arial" color="#0066cc">
<?php echo $paging?>
</font></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="96%" colspan=6><font face="Arial" color="#FF6600">
<input type=hidden name="curPg" >
</font></td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</body>
</html>
[=========> Bổ sung bài viết <=========]
Tren day la tat cả code toi da viet, nó chỉ hiển thị ra thấy tổng số trang mà khi click vào trang kế nữa thì không chịu link tới đựoc
Tại sao vậy ?
function show_page($page, $url, $total, $maxpage, $show)
{
if ($page > $maxpage)
{
$num_page = ceil($page/$maxpage);
$showpage = ($num_page = 1) * $maxpage;
$end = $showpage + $maxpage;
$showpage++;
}
else
{
$thispage = 1;
$showpage = 1;
$end = $maxpage;
}
$startpage = $showpage;
for ($showpage; $showpage < $end+1; $showpage++)
{
if ($showpage <= $total)
{
if ($page == $showpage)
{
$list_page .= "".$showpage." ";
}
else
{
$list_page .= "<a href='$url&page=$showpage' class=\"show_page\" title=\""._PAGE." $showpage\">".$showpage."</a> ";
}
}
}
if ($num_page > 1)
{
$back = $page - 1;
if ($num_page > 2)
{
$list_page1 = "<a href='$url&page=1' class=\"show_page\" title=\""._PAGE_FIRST."\">"._PAGE_FIRST."</a> ";
}
$list_page1 .= "<a href='$url&page=$back' class=\"show_page\" title=\""._PAGE_BACK."\">"._PAGE_BACK."</a> ";
}
if ( $num_page < ceil($total/$maxpage) && ($total > $maxpage) )
{
$next = $page+1;
$list_page2 .= " <a href='$url&page=$next' class=\"show_page\" title=\""._PAGE_NEXT."\">"._PAGE_NEXT."</a>";
$list_page2 .= " <a href='$url&page=$total' class=\"show_page\" title=\""._PAGE_LAST."\">"._PAGE_LAST."</a>";
}
$list_page = $list_page1 . $list_page . $list_page2;
switch ($show)
{
case "str":
return $list_page;
break;
default:
echo $list_page;
break;
}
}
- $page: biến $_GET["curPg"], tương đương biến $curPg bạn đang dùng.
- $url: Đường dẫn đang dùng, "listofitem.php?cateid=5&catename=xa_hoi".
- $total: Tổng số trang, cái này bạn phải tự tính.
- $maxpage: Số trang hiển thị ra. Ví dụ tổng số trang là 70 ($total = 70), số trang bạn muốn hiển thị là 10 ($maxpage = 10) thì khi người truy cập đang xem trang 15 danh sách trang hiển thị sẽ từ trang 10 đến trang 20, tương tự khi xem trang 25 danh sách trang hiển thị từ 30 đến trang 40...
- $show: Giá trị trả về hoặc echo ra luôn.
Demo cho dễ hiểu. Mình viết lại, code bạn viết mình nhìn không quen:
$page = isset($_GET***91;"curPg"***93;) ? intval($_GET***91;"curPg"***93;):1; //
$query_page = mysql_query("SELECT COUNT(id_tt) AS itemno FROM tintuc");
$limit = 20; // Số tin trên một trang
$number = mysql_result($query_page, 0, 'itemno'); // Tổng số tin
$total = ceil($number / $limit); // Tổng số trang bằng tổng số tin chia cho số tin trên một trang
$start = ( ($page * $limit) - $limit ); // Để bắt đầu truy vấn từ thằng này, giới hạn bởi thằng $limit
$query = mysql_query("SELECT * FROM tintuc ORDER BY id_tt DESC LIMIT $start, $limit");
while ($row = mysql_fetch_array($query))
{
// Xử lí chi tiết tin tức trên một trang ở đây.
}
// Đủ hết rồi, bây giờ show ra thôi.
echo '<div class="page">';
show_page($page, "listofitem.php?cateid=5&catename=xa_hoi", $total, 10, "");
echo '</div>';
Hi vọng nó có ích cho bạn!
Cũng chả có gì xấu cả, mời người ta vào nhà chơi thôi.
Không thích vào thì không vào, có sao đâu, nói vậy tội nghiệp nhau :P
Cũng cái lý luận này mà cả cái thành phố chỗ nào cũng có Khoa Cắt Bê Tông hết đó.