Monday, November 17, 2014

Membatasi Tampilan Tabel MySQL Dengan LIMIT


Untuk membatasi tampilan record dari tabel MySQL kita menggunakan parameter LIMIT pada perintah SELECT. Parameter LIMIT ini nantinya berguna ketika membuat pagination atau pengaturan halaman untuk menampilkan isi tabel. Nilai setelah LIMIT akan menjadi patokan bagi query dalam mengambil data dari tabel,yaitu mulai dari mana dan berapa jumlahnya. Kedua nilai ini kemudian dikombinasikan dengan id halaman dan dipakai untuk keperluan pagination tadi.

Latar Belakang perlunya LIMIT pada perintah SELECT

Ketika kita menampilkan isi tabel MySQL dengan PHP, setiap data pada tabel akan difetch satu-per satu sampai semua data diambil. Hal ini akan menjadikan masalah ketika tabel yang akan ditampilkan isinya mempunyai record yang sangat banyak sampai ribuan, puluhan ribu, ratusan ribu bahkan jutaan. Jika isi tabel terlalu besar maka akan terjadi waktu tunda aaat script PHP dijalankan. Dan berakibat dengan penurunan kecepatan akses dan performa aplikasi PHP.

Selain daripada waktu tunda diatas, tentunya data yang didapat dari perintah SELECT akan sangat tidak terbaca jika jumlahnya banyak sekali, bisa-bisa kita sudah pusing duluan sebelum menemukan record yang kita cari. Jumlah data yang wajar untuk ditampilkan kiranya akan lebih efektif jika dibawah 100 record, atau misalnya jumlah yang sering dipakai pada PHPMyAdmin hanya 30 record saja.

Cara penulisan LIMIT pada perintah query SELECT

1. Dengan menuliskan jumlah record-nya saja
SELECT * FROM nama_tabel LIMIT jumlah_record

2. Dengan menuliskan awal record dan jumlah record yang ditampilkan
SELECT * FROM nama_tabel LIMIT awal_record,jumlah_record

Contoh penggunaan LIMIT pada perintah query SELECT

Agar lebih mudah dalam memahami contoh, silahkan download sample database dengan banyak record dari situs mysqltutorial.com berikut ini.
Setelah didownload lalu buka phpMyAdmin kemudian import file mysqlsampledatabase1.zip kedalam database. Jika sukses akan muncul database baru dengan nama "classicmodels" dengan beberapa tabel seperti customers, employees, offices, orders, orderdetails dan lainnya.

tampilan tabel orderdetails dengan 2,996 record

Dari beberapa tabel diatas, kita bisa lihat tabel orderdetails dengan total record sebanyak 2,996 record. Jika kita menggunakan perintah SELECT tanpa LIMIT akan dibutuhkan waktu yang relatif lama untuk menampilkan semua record tersebut.

Dengan demikian kita akan membuat script PHP dengan menggunakan LIMIT untuk membatasi hasil dari query SELECT sebagai berikut :
 <?php   
 $dbHost = "localhost";   
 $dbUser = "root";   
 $dbPass = "123";   
 $dbName = "classicmodels";   

 // membuat koneksi mysql   
 $conn = mysqli_connect($dbHost, $dbUser, $dbPass, $dbName);   

 // mengecek koneksi mysql   
 if (!$conn) die("Koneksi Gagal: " . mysqli_connect_error());   
 else echo "Koneksi Database ".$dbName." Berhasil ...<br/><br/>";    

 //membuat query membaca 30 record dari awal tabel    
 $query="SELECT * FROM orderdetails LIMIT 0,30";    

 //menjalankan query    
 if (mysqli_query($conn,$query)) {    
 $result=mysqli_query($conn,$query);    
 } else die ("Error menjalankan query". mysqli_error());    

 //mengecek record kosong    
 if (mysqli_num_rows($result) > 0)    
 {    
   //membuat tabel dan heading  
   echo "<table border=1>";  
   echo "<tr>";  
   echo "<th>No. Order</th>";  
   echo "<th>Kode Produk</th>";  
   echo "<th>Jumlah Order</th>";  
   echo "<th>Harga Satuan</th>";  
   echo "<th>Nomor Line Order</th>";  
   echo "</tr>";  

   //menampilkan hasil query    
      while($row = mysqli_fetch_assoc($result)) {    
           echo "<tr>";  
           echo "<td>".$row["orderNumber"]."</td>";    
           echo "<td>".$row["productCode"]."</td>";    
           echo "<td>".$row["quantityOrdered"]."</td>";    
           echo "<td>".$row["priceEach"]."</td>";    
           echo "<td>".$row["orderLineNumber"]."</td>";    
           echo "</tr>";  
   }  
      echo "</table>";  
 }    
 else echo "Tidak ada Record didalam tabel";    

 // menutup koneksi mysql   
 mysqli_close($conn);   
 ?>   
Referensi :

0 komentar

Post a Comment