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.
xipam viết 12:10 ngày 10/10/2018
còn tuỳ trường hợp chứ
bác phải nói nó ko chạy tốt ở điểm nào để sửa chứ
hieutv viết 12:06 ngày 10/10/2018
bác vứt code lên đây mọi người fix cho
meotrang7x viết 12:06 ngày 10/10/2018
Cho xin 500 đồng code đi bác ơi.
phong-wint viết 12:06 ngày 10/10/2018
<html>
<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 :&nbsp;<font color=red>".$curPg."</font>&nbsp;&nbsp;&nbsp;"."Total pages :&nbsp;<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."&nbsp;&nbsp;";
else
$paging1 .= "<a href='javascript:GotoPage(".$i.")'>".$i."</a>&nbsp;&nbsp;";
$end=$i;
}
}
$paging.= "Go to page :&nbsp;&nbsp;" ;
if($curPg>$maxPages)
$paging .="<a href='javascript:GotoPage(".($start-1).")'>Previous</a>&nbsp;&nbsp;";
$paging.=$paging1;
if(((($curPg-1)/$maxPages+1)*$maxPages) < $totalPages)
$paging .= "<a href='javascript:GotoPage(".($end+1).")'>Next</a>&nbsp;&nbsp;";
}
?>
<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">&nbsp;</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 ?
metalscorpion viết 11:59 ngày 10/10/2018
Được gửi bởi phong-wint
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.
Trước giờ mình dùng function này, bạn tham khảo nhé:

PHP Code:
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; 
        }
    } 
Cách dùng: function show_page($page, $url, $total, $maxpage, $show)
- $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:

PHP Code:
$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_page0'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"$total10"");
echo 
'</div>'
Hàm này ngày xưa thằng bạn share cho hay search được cũng không nhớ, nhưng mình không phải là người viết ra nó.

Hi vọng nó có ích cho bạn!
thuyduongcd viết 12:08 ngày 10/10/2018
Bác này chuyên đi đào mộ để mà PR. Nản!
kogankid viết 12:11 ngày 10/10/2018
Được gửi bởi lehieu008
Bạn có thể tham khảo hàm phân trang tại http://itcvietnam.org/viewtopic.php?f=54&t=101
Hàm này đảm bảo làm việc ok 100%
Được gửi bởi thuyduongcd
Bác này chuyên đi đào mộ để mà PR. Nản!
Nếu bạn cùng mới bắt đầu 1 prj online, bạn cũng bị ám ảnh và vác hàng nhà đi PR thôi.

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
thuyduongcd viết 12:09 ngày 10/10/2018
Được gửi bởi kogankid
Nếu bạn cùng mới bắt đầu 1 prj online, bạn cũng bị ám ảnh và vác hàng nhà đi PR thôi.

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
Thế nếu một ngày nào đó có thằng nó vác cả xấp "tờ rơi" vãi trước sân nhà bác với cái lý luận "bác thích thì đọc không thích thì thôi" thì bác nghĩ sao?
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 đó.
chameron viết 11:58 ngày 10/10/2018
các bác chỉ cho người ta đi sao lại cãi nhau
Bài liên quan
0