Teknik paginasi dengan PHP

wew kk wew…

gak salah gue beli buku ini.. keren abis bro.. teknik2 php keren ada disini, salah satu tekniknya mungkin mo gue jabarin disini, itung-itung bagi ilmu.

Paging, page, halaman. Teknik membuat tampilan data menjadi halaman-halaman. Bayangkan jika tanpa  teknik ini, seandainya input yang dimasukkan ratusan bakalan pusing lihatnya. Atau kalau mau lebih jelas wordpress gue pun memakai teknik paging juga. Lihat aja, gak semua postingan gue dari pertama nulis sampai postingan terbaru ditampilkan dalam satu layar, tetapi cuma 10 postingan tiap halaman. Jika mau lihat halaman selanjutnya tinggal klik “halaman selanjutnya” di bagian bawah. Itu maksudnya paginasi.

<?php
//by. ykzir
//ini cuma bagian phpnya saja
//Kondisinya sebagai berikut:
//kita akan memanggil mysql database dengan user = root dan pass = root
//database tempat data berada bernama = kantor
//dalam database tersebut terdapat tabel = pegawai dengan field 'id' dan 'nama'

//BAGIAN 1: PAGINASI SETTING
  $batas = 5;
  $halaman = $_GET['halaman'];
  if(empty ($halaman)){
        $posisi = 0;
        $halaman = 1;
  }else{
	$posisi = ($halaman-1)* $batas;
  }

//BAGIAN 2 : Menampilkan data di MySql menyesuaikan dengan posisi dan batas yang telah ditentukan
        $connect= mysql_connect("localhost, "root", "root");
	mysql_select_db("kantor",$connect);

        //query untuk "menyelect tabel pegawai"
        //dengan "urutan berdasar id secara descend(mundur)".
        //LIMIT menunjukkan posisi Select dan Batas yang berakibat
        //misalkan: batas= 5 posisi=0
        // di hal pertama : akan muncul nama pegawai dari ID 0-4
        // di hal kedua   : akan muncul nama pegawai dari ID 5-9
        // tergantung batas dan posisi pada settingan paginasi di atas
        $tampil = "SELECT * FROM pegawai ORDER BY id DESC LIMIT $posisi,$batas ";
	$result = mysql_query($tampil, "kantor") or die(mysql_error());

        //Menampilkan data ke layar sejumlah batas halaman yang telah ditentukan
	$no = $posisi+1;
	while ($data = mysql_fetch_array($result))
	{
                //Bagian ini mengeset warna baris agar belang-belang
		if(($no % 2 ) == 0)
		{
			$col1="grey";
			$col2="white";
		}
		else
		{
			$col1="white";
			$col2="black";
		}
		echo "
<table border=\"1\" align=\"center\">
<tr bgcolor=$col1>
<td>$data[id]</td>
<td>$data[nama]</td>
</tr>
</table>
";
		$no++;
        }

//BAGIAN 3: menampilkan link-link halaman data yang telah dipaginasi
	echo "
<div align=\"center\">";
		echo "Page: ";
		$tampil2 = "SELECT * FROM pegawai";
		$result2 = mysql_query($tampil2, "kantor") or die(mysql_error());
		$jmldata = mysql_num_rows($result2);
		$jmlhalaman = ceil($jmldata/$batas);

		for($i=1; $i <= $jmlhalaman;$i++)
		{
			if($i != $halaman)
 		        {
				echo "<u><a href=$_SERVER[PHP_SELF]?halaman=$i>$i</a></u> | ";
			}else{
				echo "<b>$i</b> |";
			}
		}
        echo "</div>
";

}
?>

15 pemikiran pada “Teknik paginasi dengan PHP

  1. mas nanya, ini kalo mau ada nomornya bisa?
    ditambah kolom nomor gitu maksudnya di tabelnya…
    jadi kalo misal batesnya 5, halaman 1 nomornya 1-5,
    terus di halaman ke dua nomornya 6-10, ketiga nomornya 11-15 dst…

    terima kasih..
    wasalam

  2. @riskisaja

    Bisa aja,
    idenya cukup memodif bagian yang menampilkan tabel, yakni dengan menambahkan tag “td” berisikan nomor setiap kali while. Karena kebetulan variabel $no sudah merepresentasikan nomor yang dimaksud jadi tinggal dipakai aja.

    jadinya kira-kira seperti ini :

     //Menampilkan data ke layar sejumlah batas halaman yang telah ditentukan
    	$no = $posisi+1;
    	while ($data = mysql_fetch_array($result))
    	{
    		if(($no % 2 ) == 0)
    		{
    			$col1="grey";
    			$col2="white";
    		}
    		else
    		{
    			$col1="white";
    			$col2="black";
    		}
    		echo "
    <table border=\"1\" align=\"center\">
    <tr bgcolor=$col1>
    <td>$no</td> 
    <td>$data[id]</td>
    <td>$data[nama]</td>
    </tr>
    </table>
    ";
    		$no++;
            }
    
  3. Katakanlah ada 100 record data, kemudian kita pisahkan setiap page 25 record (jadinya 4 halaman) itu kalau tidak ada inputan apa2. Kemudian kita berikan saringan berdasarkan ID dan NAMA, ternyata hasil penyaringan ada 55 record (berarti ada 3 halaman) terus kita coba buka halaman 2, koq munculnya malah keseluruhan record? nah saya maunya itu lanjutan dari search saya itu ini contoh codinganya mas…

    MASTER DIVISI



     

     
     
     

    ID Divisi
    :

     

    Nama Divisi
    :

    NO.
    ID Divisi
    Nama Divisi
    Action

    1 and !is_numeric($start)){
    echo “Data Error”;
    exit;
    }

    $baru=-1;
    $eu = ($start -0);
    $limit = 3 ; // No of records to be shown per page.
    $this1 = $eu + $limit;
    $saya = $baru +$start;
    $back = $eu – $limit;
    $next = $eu + $limit;
    ?>

    <?
    /////////// Now let us print the table headers ////////////////

    ////////////// Now let us start executing the query with variables $eu and $limit set at the top of the page///////////
    $query=" SELECT divisi_id,divisi_nama
    FROM ms_divisi
    WHERE rec_status='1'
    AND divisi_id LIKE '%$keyword_id%'
    AND divisi_nama LIKE '%$keyword_nama%'
    ORDER BY divisi_id limit $eu, $limit ";
    $result=mysql_query($query);
    echo mysql_error();

    //////////////// Now we will display the returned records in side the rows of the table/////////

    print "”;
    $no=$saya+1;
    while ($noticia2 =mysql_fetch_array($result)){
    $no++

    ?>

    <?php
    print "“;
    print ““;
    ?>

    $limit ){ // Let us display bottom links if sufficient records are there for paging

    /////////////// Start the bottom links with Prev and next link with page numbers /////////////////
    echo “”;
    //// if our variable $back is equal to 0 or more then only we will display the link to move back ////////
    if($back >=0) {
    print “PREV“;
    }
    //////////////// Let us display the page links at center. We will not display the current page as a link ///////////
    echo “”;
    $i=0;
    $l=1;
    for($i=0;$i < $nume;$i=$i+$limit){
    if($i $eu){
    echo ” $l “;
    }
    else { echo “$l”;} /// Current page is not displayed as link and given font color red
    $l=$l+1;
    }

    echo “”;
    ///////////// If we are not in the last page then Next link will be displayed. Here we check that /////
    if($this1 < $nume) {
    print "NEXT“;}
    echo “”;

    }// end of if checking sufficient records are there to display bottom navigational link.
    ?>

    TO_OUT();

    • mungkin setelah disearch, $keyword_id atau $keyword_name nya lupa diset? sehingga menghasilkan LIKE ‘%%’ yang artinya sama saja dengan mengambil semua datanya?

    • Sebenarnya balik lagi ke pertanyaan lo sih. Memangnya $keyword_id atau $keyword_name itu tiba-tiba muncul di query gimana caranya?

      Misal hasil searchnya dilakukan dengan post berarti kira-kira semacam
      $keyword_name = $_POST[‘keyword_name’];
      dst…

      atau kalau dengan get berarti semacam
      $keyword_name = $_GET[‘keyword_name’];
      dst..

      Fyi, postingan ini adalah teknik paginasi PHP yang manual. Sekarang sudah ada banyak plugins paginasi yang bisa kita pakai dengan mudah kalau mau situs PHP lo cepat jadi. Misalnya smartpaginator, dan lain-lain.

      Atau untuk keperluan tabel ada plugins oke semacam datatables atau jqGrid. Kita nggak usah mikirin lagi paginasinya. Begitu pula dengan fitur-fitur CRUD lainnya.

  4. MASTER DIVISI



     

     
     
     

    ID Divisi
    :

     

    Nama Divisi
    :

    NO.
    ID Divisi
    Nama Divisi
    Action

    1 and !is_numeric($start)){
    echo “Data Error”;
    exit;
    }

    $baru=-1;
    $eu = ($start -0);
    $limit = 3 ; // No of records to be shown per page.
    $this1 = $eu + $limit;
    $saya = $baru +$start;
    $back = $eu – $limit;
    $next = $eu + $limit;
    ?>

    <?
    /////////// Now let us print the table headers ////////////////

    ////////////// Now let us start executing the query with variables $eu and $limit set at the top of the page///////////
    $query=" SELECT divisi_id,divisi_nama
    FROM ms_divisi
    WHERE rec_status='1'
    AND divisi_id LIKE '%$keyword_id%'
    AND divisi_nama LIKE '%$keyword_nama%'
    ORDER BY divisi_id limit $eu, $limit ";
    $result=mysql_query($query);
    echo mysql_error();

    //////////////// Now we will display the returned records in side the rows of the table/////////

    print "”;
    $no=$saya+1;
    while ($noticia2 =mysql_fetch_array($result)){
    $no++

    ?>

    <?php
    print "“;
    print ““;
    ?>

    $limit ){ // Let us display bottom links if sufficient records are there for paging

    /////////////// Start the bottom links with Prev and next link with page numbers /////////////////
    echo “”;
    //// if our variable $back is equal to 0 or more then only we will display the link to move back ////////
    if($back >=0) {
    print “PREV“;
    }
    //////////////// Let us display the page links at center. We will not display the current page as a link ///////////
    echo “”;
    $i=0;
    $l=1;
    for($i=0;$i < $nume;$i=$i+$limit){
    if($i $eu){
    echo ” $l “;
    }
    else { echo “$l”;} /// Current page is not displayed as link and given font color red
    $l=$l+1;
    }

    echo “”;
    ///////////// If we are not in the last page then Next link will be displayed. Here we check that /////
    if($this1 < $nume) {
    print "NEXT“;}
    echo “”;

    }// end of if checking sufficient records are there to display bottom navigational link.
    ?>

    TO_OUT();

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s