mysql veri ile php kullanarak sayfalama

1 Cevap

i DB öğelerin sayısına bağlı olarak bir seferde 5 ürün var olduğu bir sayfalandırma oluşturmak çalışıyorum. ben bu kodu yazdım. ama daha ileri gitmek nasıl dono. kendi arabası .. Bunun için herhangi bir iyi pagination veya değişiklik

<?php

$myresult .= "<div class='pagination' >";

if ($pagenum == 1)
{
}
else
{
$pagenum = 1;
$myresult .= "<a href='javascript:newPage(\"".$pagenum."\")'>&nbsp;first&nbsp;</a>";

$myresult .= " ";

$previous = $pagenum-1;
$myresult .= "<a href='javascript:newPage(\"".$previous."\")'> &nbsp;Prev&nbsp;</a>";

if ($pagenum == $last)
{

$previous3 = $pagenum-4;
$myresult .= "<a href='javascript:newPage(\"".$previous3."\")'> &nbsp; $previous3 &nbsp;</a>";

$previous2 = $pagenum-3;
$myresult .= "<a href='javascript:newPage(\"".$previous2."\")'> &nbsp; $previous2 &nbsp;</a>";
}
if ($pagenum > 2)
{
$previous1 = $pagenum-2;
$myresult .= "<a href='javascript:newPage(\"".$previous1."\")'> &nbsp; $previous1 &nbsp;</a>";

}
if ($pagenum > 1)
{

$previous2 = $pagenum-1;
$myresult .= "<a href='javascript:newPage(\"".$previous2."\")'> &nbsp; $previous2 &nbsp;</a>";
$myresult .= " ";

}



}

$myresult .= "<span class=\"disabled\"> $pagenum </span>";



if ($pagenum == $last)
{
}
else {

if($pagenum < $last - 1)
{
$next = $pagenum+1;
$myresult .= "<a href='javascript:newPage(\"".$next."\")'>&nbsp; $next &nbsp;</a>";
}
if($pagenum < $last - 2)
{
$next1 = $pagenum+2;
$myresult .= "<a href='javascript:newPage(\"".$next1."\")'> &nbsp; $next1 &nbsp;</a>";
}
if($pagenum == 1 )
{
$next2 = $pagenum+3;
$myresult .= "<a href='javascript:newPage(\"".$next2."\")'> &nbsp; $next2 &nbsp;</a>";

$next3 = $pagenum+4;
$myresult .= "<a href='javascript:newPage(\"".$next3."\")'> &nbsp; $next3 &nbsp;</a>";
}
if($pagenum == 2 )
{
$next2 = $pagenum+3;
$myresult .= "<a href='javascript:newPage(\"".$next2."\")'> &nbsp; $next2 &nbsp;</a>";
}
$next = $pagenum+1;
$myresult .= "<a href='javascript:newPage(\"".$next."\")'>&nbsp;Next&nbsp;</a>";


$myresult .= "<a href='javascript:newPage(\"".$last."\")'>&nbsp;Last</a>";

}
$myresult .= "</div>";
$myresult .= "</br>";
?>

1 Cevap

Belki de bugüne kadar ama burada en iyi cevabı ben kullandım bir şey değildir:

<?php

class Pagination {

    function __construct() {

    }

    function getPaginatinationNavigation($page = 1, $num_rows, $rows_per_page, $page_name)
    {
        $lastpage = ceil($num_rows/$rows_per_page);

        $page = (int)$page;
        if ($page > $lastpage) 
        {
            $page = $lastpage;
        } 
        if ($page < 1) {
            $page = 1;
        } 

        $content='<p style="text-align: center;">';

        if ($page == 1) {
            $content.= " FIRST PREV ";
        } else {
            $content.= " <a href='$page_name?page=1'>FIRST</a> ";
            $prevpage = $page-1;
            $content.= " <a href='$page_name?page=$prevpage'>PREV</a> ";
        } 

        $content.= " ( Page $page of $lastpage ) ";

        if ($page == $lastpage) {
            $content.= " NEXT LAST ";
        } else {
            $nextpage = $page+1;
            $content.= " <a href='$page_name?page=$nextpage'>NEXT</a> ";
            $content.= " <a href='$page_name?page=$lastpage'>LAST</a> ";
        } 

        $content.= '</p>';

        return $content;

    }
}

?>

Nesne İthalat

require_once('classes/Pagination.php');

Toplam satır miktarda alın:

$query= "SELECT COUNT(*) FROM TABLE_NAME";
$row = mysql_fetch_array($getResults);
$numRecords = $row[0];

Sayfa sayısına dayalı satırları sınırlamak için LIMIT olun:

$limit = ' LIMIT ' . ($page - 1) * 25 .', 25';

Sorgu KULLANMA SINIRI

$query = 'SELECT * FROM TABLE_NAME' . $limit;
$getResults=mysql_query($query) or die(mysql_error());

Normalde yaptığınız gibi Sonuçları görüntüler:

while($row = mysql_fetch_array($getResults))
{
 DISPLAY RESULTS HERE
}

Navigasyon tükürmek için Class kullanın:

$pagination->getPaginatinationNavigation($page, $numRecords, 25, 'display_page_name.php');

Yani Genel olarak, sayfalandırmada size 2 sorguları yapmak gerekir:

1) To get the total amount of records in your search 2) To get the Records LIMITed to those items in a range: say 25 to 50 or 1000 to 1050

Sen sınırlı sorgu kayıtları görüntülemek ve tek sayfa sayısını artırmak kayıtlarının bir sonraki sete gitmek için.

Umarım bu yardımcı olur. Eğer url sorgu dizesi olsun herhangi bir veri fırçalayın unutmayın.

Daha fazla açıklamak beni istiyorsanız bana bildirin.