2077 Posts in 484 Topics- by 821 Members - Latest Member: liricklagu

Pages: [1]   Go Down
  Print  
Author Topic: Paging Data dalam PHP - Cara 2  (Read 2581 times)
webmaster
Administrator
phpBB Guru
*****
Offline Offline

Posts: 924


hairulazami
View Profile WWW
« on: March 18, 2007, 07:09:28 PM »

Nah untuk cara Kedua ini lebih sederhana hanya saja kamu membutuhkan file class untuk pengaturan link halaman, dll.

Pertama buat dulu File Class nya:
Simpan dengan nama: page_class.php

Code:

<?php
class PaginateIt &#123;

    
var $currentPage$itemCount$itemsPerPage$linksHref$linksToDisplay;
    var 
$pageJumpBack$pageJumpNext$pageSeparator;
    var 
$queryString$queryStringVar;

    function 
SetCurrentPage&#40;$reqCurrentPage&#41;&#123;
        
$this->currentPage = &#40;integer&#41; abs&#40;$reqCurrentPage&#41;;
    
&#125;

    
function SetItemCount&#40;$reqItemCount&#41;&#123;
        
$this->itemCount = &#40;integer&#41; abs&#40;$reqItemCount&#41;;
    
&#125;

    
function SetItemsPerPage&#40;$reqItemsPerPage&#41;&#123;
        
$this->itemsPerPage = &#40;integer&#41; abs&#40;$reqItemsPerPage&#41;;
    
&#125;

    
function SetLinksHref&#40;$reqLinksHref&#41;&#123;
        
$this->linksHref $reqLinksHref;
    &
#125;

    
function SetLinksFormat&#40;$reqPageJumpBack, $reqPageSeparator, $reqPageJumpNext&#41;&#123;
        
$this->pageJumpBack $reqPageJumpBack;
        
$this->pageSeparator $reqPageSeparator;
        
$this->pageJumpNext $reqPageJumpNext;
    &
#125;

    
function SetLinksToDisplay&#40;$reqLinksToDisplay&#41;&#123;
        
$this->linksToDisplay  = &#40;integer&#41; abs&#40;$reqLinksToDisplay&#41;;
    
&#125;

    
function SetQueryStringVar&#40;$reqQueryStringVar&#41;&#123;
        
$this->queryStringVar $reqQueryStringVar;
    &
#125;

    
function SetQueryString&#40;$reqQueryString&#41;&#123;
        
$this->queryString $reqQueryString;
    &
#125;
    
    
function GetCurrentCollection&#40;$reqCollection&#41;&#123;
        
if&#40;$this->currentPage < 1&#41;&#123;
            
$start 0;
        &
#125;
        
elseif&#40;$this->currentPage > $this->GetPageCount&#40;&#41;&#41;&#123;
            
$start $this->GetPageCount&#40;&#41; * $this->itemsPerPage - $this->itemsPerPage;
        
&#125;
        
else &#123;
            
$start $this->currentPage $this->itemsPerPage $this->itemsPerPage;
        &
#125;
        
        
return array_slice&#40;$reqCollection, $start, $this->itemsPerPage&#41;;
    
&#125;

    
function GetPageCount&#40;&#41;&#123;
        
return &#40;integer&#41;ceil&#40;$this->itemCount/$this->itemsPerPage&#41;;
    
&#125;

    
function GetPageLinks&#40;&#41;&#123;
        
$strLinks '';
        
$pageCount $this->GetPageCount&#40;&#41;;
        
$queryString $this->GetQueryString&#40;&#41;;
        
$linksPad floor&#40;$this->linksToDisplay/2&#41;;

        
if&#40;$this->linksToDisplay == -1&#41;&#123;
            
$this->linksToDisplay $pageCount;
        &
#125;


        
if&#40;$pageCount == 0&#41;&#123;
            
$strLinks '1';
        &
#125;
        
elseif&#40;$this->currentPage - 1 <= $linksPad || &#40;$pageCount - $this->linksToDisplay + 1 == 0&#41; || $this->linksToDisplay > $pageCount&#41;&#123; 
            
$start 1;
        &
#125;
        
elseif&#40;$pageCount - $this->currentPage <= $linksPad&#41;&#123;
            
$start $pageCount $this->linksToDisplay 1;
        &
#125;
        
else &#123;
            
$start $this->currentPage $linksPad;
        &
#125;


        
if&#40;isset&#40;$start&#41;&#41;&#123;
            
if&#40;$start > 1&#41;&#123;
                
if&#40;!empty&#40;$this->pageJumpBack&#41;&#41;&#123;
                    
$pageNum $start $this->linksToDisplay $linksPad;
                    if&
#40;$pageNum < 1&#41;&#123;
                        
$pageNum 1;
                    &
#125;

                    
$strLinks &#46;= '<a class="bodLink" href="'&#46;$this->linksHref&#46;$queryString&#46;$pageNum&#46;'">';
                    
$strLinks &#46;= $this->pageJumpBack&#46;'</a>'&#46;$this->pageSeparator;
                
&#125;

                
$strLinks &#46;= '<a class="bodLink" href="'&#46;$this->linksHref&#46;$queryString&#46;'1">1&#46;&#46;&#46;</a>'&#46;$this->pageSeparator;
            
&#125;


            
if&#40;$start + $this->linksToDisplay > $pageCount&#41;&#123;
                
$end $pageCount;
            &
#125;
            
else &#123;
                
$end $start $this->linksToDisplay 1;
            &
#125;


            
for&#40;$i = $start; $i <= $end; $i ++&#41;&#123;
                
if&#40;$i != $this->currentPage&#41;&#123;
                    
$strLinks &#46;= '<a class="bodLink" href="'&#46;$this->linksHref&#46;$queryString&#46;&#40;$i&#41;&#46;'">';
                    
$strLinks &#46;= &#40;$i&#41;&#46;'</a>'&#46;$this->pageSeparator;
                
&#125;
                
else &#123;
                    
$strLinks &#46;= $i&#46;$this->pageSeparator;
                
&#125;
            
&#125;
            
$strLinks substr&#40;$strLinks, 0, -strlen&#40;$this->pageSeparator&#41;&#41;;


            
if&#40;$start + $this->linksToDisplay - 1 < $pageCount&#41;&#123;
                
$strLinks &#46;= $this->pageSeparator&#46;'<a class="bodLink" href="'&#46;$this->linksHref&#46;$queryString&#46;$pageCount&#46;'">';
                
$strLinks &#46;= '&#46;&#46;&#46;'&#46;$pageCount&#46;'</a>'&#46;$this->pageSeparator;
                
                
if&#40;!empty&#40;$this->pageJumpNext&#41;&#41;&#123;
                    
$pageNum $start $this->linksToDisplay $linksPad;
                    if&
#40;$pageNum > $pageCount&#41;&#123;
                        
$pageNum $pageCount;
                    &
#125;
                    
                    
$strLinks &#46;= '<a class="bodLink" href="'&#46;$this->linksHref&#46;$queryString&#46;$pageNum&#46;'">';
                    
$strLinks &#46;= $this->pageJumpNext&#46;'</a>';
                
&#125;
            
&#125;
        
&#125;


        
return $strLinks;
    &
#125;

    
function GetQueryString&#40;&#41;&#123;
        
$pattern = array&#40;'/'&#46;$this->queryStringVar&#46;'=[^&&#93;*&?/', '/&$/'&#41;;
        
$replace = array&#40;'', ''&#41;;
        
$queryString preg_replace&#40;$pattern, $replace, $this->queryString&#41;;
        
$queryString str_replace&#40;'&', '&amp;', $queryString&#41;;
        
        
if&#40;!empty&#40;$queryString&#41;&#41;&#123;
            
$queryString&#46;= '&amp;';
        
&#125;

        
return '?'&#46;$queryString&#46;$this->queryStringVar&#46;'=';
    
&#125;

    
function GetSqlLimit&#40;&#41;&#123;
        
return ' LIMIT '&#46;&#40;$this->currentPage * $this->itemsPerPage - $this->itemsPerPage&#41;&#46;', '&#46;$this->itemsPerPage;
    
&#125;

    
function GetLimit&#40;&#41;&#123;
    
return ' LIMIT '&#46;&#40;$this->currentPage-1&#41;*$this->itemsPerPage&#46;', '&#46;$this->itemsPerPage;
    
&#125;

    
function PaginateIt&#40;&#41;&#123;
        
$this->SetCurrentPage&#40;1&#41;;
        
$this->SetItemsPerPage&#40;10&#41;;
        
$this->SetItemCount&#40;0&#41;;
        
$this->SetLinksFormat&#40;'&laquo; Back',' &bull; ','Next &raquo;'&#41;;
        
$this->SetLinksHref&#40;$_SERVER['PHP_SELF'&#93;&#41;;
        
$this->SetLinksToDisplay&#40;10&#41;;
        
$this->SetQueryStringVar&#40;'page'&#41;;
        
$this->SetQueryString&#40;$_SERVER['QUERY_STRING'&#93;&#41;;

        
if&#40;isset&#40;$_GET[$this->queryStringVar&#93;&#41; && is_numeric&#40;$_GET[$this->queryStringVar&#93;&#41;&#41;&#123;
            
$this->SetCurrentPage&#40;$_GET[$this->queryStringVar&#93;&#41;;
        
&#125;
    
&#125;
&#125;

$PaginateIt = new PaginateIt&#40;&#41;;
?>




WOKE lu bikin satu lagi file dengan code seperti ini, untuk uji coba:

Simpan dengan nama paginate2.php

Code:

<?
//Koneksi
$_userDbase="aku";  //ganti dengan user Dbase
$_passDbase="padamu_sayang";   //ganti dengan pass Dbase
$_namaDbase="database_gallery";   //ganti dengan nama Dbase

$con=mysql_connect("localhost","$_userDbase","$_passDbase");
$dBase=mysql_select_db("$_namaDbase", $con);


include('inc/page_class.php');

$PaginateIt = new PaginateIt();
$PaginateIt->SetItemsPerPage(15); //jumlah data perhalaman yg dikehendaki
$PaginateIt->SetLinksToDisplay(3); // jumlah link navigasi halaman

//QUERY pertama , jumlah aktual data
$QRY = mysql_query("SELECT * FROM com_w_tips order by comPostTime desc");
$result = mysql_num_rows($QRY);
$PaginateIt->SetItemCount($result);

// QUERY kedua,  mengambil data yang di harapkan saja
$SQL = "SELECT * FROM com_w_tips order by comPostTime desc" . $PaginateIt->GetSqlLimit();
$QRY = mysql_query($SQL);
// looping perintah QUERY kedua

if($result>0) {

echo"
<div align=center>
Hal. "; $PaginateIt->SetLinksFormat(" << Prev "," | "," Next >> ");
echo $PaginateIt->GetPageLinks();
echo"</div>
<br><br>
LIST DATA TIPS, TRIK, ARTIKEL dremi.info - Jumlah Data $result
";
echo"<table width='100%' border='0' cellspacing='2' cellpadding='1'>";
       
for ($i=1;$i<=$result;$i++) {


while($ROW=mysql_fetch_array($QRY))
{
echo"
<tr>
<td width='3%'>".$i++."</td>
<td width='97%'><a href='wwwtips.php?cID=$ROW[comID]' class='bodLink'>$ROW[comName]</a></td>
</tr>
<tr>
<td></td>
<td><font class='textfootenable'>Posted: $ROW[comPostTime]</font></td>
</tr>";
}
echo"</table>";
}


}
?>



Cara kedua ini memiliki kelebihan dapat memproses keluaran data yang sebelumnya kita atur dalam class, dan ini tentunya akan menghemat energy dalam pembuatannya, karena untuk mengubah jumlah tampilan data perhalaman, cukup dengan mengubah angka pada baris :
$PaginateIt->SetItemsPerPage(15);

Dan untuk variable halaman ($page) itu ga perlu di set, nantinya akan otomatis akan mengambil sendiri variablenya.

Wah panjang yak, hahahaa ya gitu deeee...


Ni untuk contoh hasil jadinya: http://www.dremi.info/paginate2.php
Kalo mau download file jadina klik ini: http://www.dremi.info/web/tips/download/paginate2.zip

Semoga bermanfaat  :roll:
« Last Edit: January 01, 1970, 07:00:00 AM by webmaster » Logged


huhui
phpBB Guru
*
Offline Offline

Posts: 102


View Profile WWW
« Reply #1 on: July 17, 2007, 03:34:59 PM »

keren euy  :D

Code:
<?
//Koneksi
$_userDbase="aku";  //ganti dengan user Dbase
$_passDbase="padamu_sayang";   //ganti dengan pass Dbase
$_namaDbase="database_gallery";   //ganti dengan nama Dbase

$con=mysql_connect("localhost","$_userDbase","$_passDbase");
$dBase=mysql_select_db("$_namaDbase", $con);


[b]include('inc/page_class.php');[/b]
kalo pas gw download isinnya
[b]include('inc/PaginateIt.php');[/b]


$PaginateIt = new PaginateIt();
$PaginateIt->SetItemsPerPage(15); //jumlah data perhalaman yg dikehendaki
$PaginateIt->SetLinksToDisplay(3); // jumlah link navigasi halaman

//QUERY pertama , jumlah aktual data
$QRY = mysql_query("SELECT * FROM com_w_tips order by comPostTime desc");
$result = mysql_num_rows($QRY);
$PaginateIt->SetItemCount($result);

// QUERY kedua,  mengambil data yang di harapkan saja
$SQL = "SELECT * FROM com_w_tips order by comPostTime desc" . $PaginateIt->GetSqlLimit();
$QRY = mysql_query($SQL);
// looping perintah QUERY kedua

if($result>0) {

echo"
<div align=center>
Hal. "; $PaginateIt->SetLinksFormat(" << Prev "," | "," Next >> ");
echo $PaginateIt->GetPageLinks();
echo"</div>
<br><br>
LIST DATA TIPS, TRIK, ARTIKEL dremi.info - Jumlah Data $result
";
echo"<table width='100%' border='0' cellspacing='2' cellpadding='1'>";
       
for ($i=1;$i<=$result;$i++) {
     
     
while($ROW=mysql_fetch_array($QRY))
{
   echo"
   <tr>
      <td width='3%'>".$i++."</td>
      <td width='97%'><a href='wwwtips.php?cID=$ROW[comID]' class='bodLink'>$ROW[comName]</a></td>
   </tr>
   <tr>
      <td></td>
      <td><font class='textfootenable'>Posted: $ROW[comPostTime]</font></td>
   </tr>";
}
echo"</table>";
}


}
?>

gw jadi pengen belajar membuat web

btw unikom angkatan berapa boss?[/code]
« Last Edit: January 01, 1970, 07:00:00 AM by huhui » Logged

webmaster
Administrator
phpBB Guru
*****
Offline Offline

Posts: 924


hairulazami
View Profile WWW
« Reply #2 on: July 17, 2007, 06:49:45 PM »

ni orang maen masuk ajah.. Sad hheehheeee..lum lulus2 gua mah...

btw gue kelas karyawan / klas malem IF 10K

Tau web gue dari Mang Google yak ?

Haha..gue kcewa ma MHS Unikom bisanya nongkrong dowang..webnya juga dah ga bisa diakses..padahal dremi.info tumbuh dan berkembang pertama kali dari web Mahasiswa itu...

Salam knal bwat anak2 unikom dah..walopun gue anak UNIKOM gue jarang tau anak2 nya..hehe...

Thanks :D
« Last Edit: January 01, 1970, 07:00:00 AM by webmaster » Logged


huhui
phpBB Guru
*
Offline Offline

Posts: 102


View Profile WWW
« Reply #3 on: July 18, 2007, 08:55:04 AM »

bener brow
gw juga sebenernya dah tau dari dulu ada dremi.info  
itu juga dari web mahasiswa yang sekarang kaga bisa di akses Cheesy

berarti lo temennya si ahmad amrullah yah   Sad
cuman kalo kaga salah terakhir  mhsweb yang baru blom bisa upload file yah:D, kaga tau sekarang servernya masih ada apa belom  :oops:
salah room :P
« Last Edit: January 01, 1970, 07:00:00 AM by huhui » Logged

Pages: [1]   Go Up
  Print  
 
Jump to: