Kadang record yang ada didalam database sudah terlalu banyak bisa menjadikan tampilan tidak efektif lagi. Dengan melihat masalah itu, maka php punya cara untuk memecahkannya. Yu diskusiin bersama (Syarat ikut diskusi ini bagi pemula yang sudah mengenal PHP dasar dan MySQL di phpmyadmin), langkah pertama kita buat databasenya dan Table beserta isinya :
Buka Localhost/phpmyadmin, klik SQL dan masukan script SQL berikut :
create database db_barang;use db_barang;
create table t_barang (kd_brg char(3) primary key,
nama_brg char(50), harga int, stok int);
insert into t_barang values ('B01', 'Mie Rebus', 1200, 14);
insert into t_barang values ('B02', 'Mie Bakar', 1100, 4);
insert into t_barang values ('B03', 'Mie Kriting', 2100, 33);
insert into t_barang values ('B04', 'Mie Goreng', 1100, 24);
insert into t_barang values ('B05', 'Mie Sore', 500, 1);
insert into t_barang values ('B06', 'Mie 87', 2400, 9);
insert into t_barang values ('B07', 'Mie Ayam', 900, 12);
insert into t_barang values ('B08', 'Mie Bebek', 1200, 14);
insert into t_barang values ('B09', 'Mie Panggang', 1200, 24);
insert into t_barang values ('B10', 'Mie Soto', 1300, 17);
insert into t_barang values ('B11', 'Mie Kukus', 2200, 15);
Misalkan kita mau menampilkan setiap page-nya berisi 3 data/ record seperti ini script php-nya :
Membagi Halaman dengan Page pada PHP
/* Koneksi ke Database */
$host="localhost"; $uname="root"; $pass=""; $db="db_barang";
$koneksi=mysql_connect($host,$uname,$pass);
mysql_select_db($db,$koneksi);
$table = t_barang;
$hal = $_GET['hal'];
if(!isset($_GET['hal']))
{
$page = 1;
} else {
$page = $_GET['hal'];
}
$max_results = 3;
$from = (($page * $max_results) - $max_results);
$sql = "select * from $table ORDER BY kd_brg DESC limit $from, $max_results";
$runquery = mysql_query($sql);
?>";
Kode Barang
Nama
Harga
Stok
while($result = mysql_fetch_array($runquery))
{
$kd = $result['kd_brg'];
$nama = $result['nama_brg'];
$hrg = $result['harga'];
$stok = $result['stok'];
print ""; $kd $nama $hrg $stok
}
print"
$sql_tot = mysql_query("SELECT COUNT(*) as Num FROM $table");
$total_results = mysql_result($sql_tot,0);
$total_pages = ceil($total_results / $max_results);
/* bangun jumlah hiperlink halaman*/
echo "page : ";
/* bangun Previous link */
if($hal > 1){
$prev = ($page - 1);
echo "Sebelumnya ";
}
/* bangun Halaman per page */
for($i = 1; $i <= $total_pages; $i++){
if(($hal) == $i){
echo "$i ";
} else {
echo "$i ";
}
}
/* bangun Next link */
if($hal < $total_pages){
$next = ($page + 1);
echo " Selanjutnya";
}
?>
Simpan dengan nama "apaja.php". Hayu bongkar pada yang dilakukan script ini, pertama statemen koneksi ke database localhost dan memilih database yang akan digunakan, kemudian :
$hal = $_GET['hal']; // $hal diisi dari hasil nilai get dari "hal"
if(!isset($_GET['hal'])) // Jika nilai get dari "hal" tidak ada
{ // maka
$page = 1; // $page diisi 1, artinya default pagenya 1
} else { // jika ada maka
$page = $_GET['hal']; // $page diisi sesuai nilai dari get "hal"
}
Bisa diikuti sampai situ? Maksudnya nilai get dari "hal" yaitu pernah lihat kan ada url begini http://www.anu.com/page.php?hal=1. Naah bagian hal=1 itulah yang disebut nilai get dari "hal", itu sih bahasa dari saya mungkin ada yang lebih resmi. Lanjuut..
$max_results = 3; // berapa record yang mau ditampilkan
$from = (($page * $max_results) - $max_results);
// $form dibuat untuk pembatas mulai darimana record ditampilkan
$sql = "select * from $table ORDER BY kd_brg DESC limit $from, $max_results";
$runquery = mysql_query($sql); // eksekusi perintah SQL
Dibagian ini penyeleksian data dari database yang akan ditampikan dan dibatasi oleh $from untuk mulai dari data keberapa dan $max_result untuk maksimal data yang ditampilkan.
Kode Barang
Nama
Harga
Stok
while($result = mysql_fetch_array($runquery))
{
$kd = $result['kd_brg'];
$nama = $result['nama_brg'];
$hrg = $result['harga'];
$stok = $result['stok'];
print "
$kd
$nama
$hrg
$stok
";
}
print"
";
Bagian script diatas melakukan pembuatan table yang baris pertama diisi judul setiap kolomnya, baris-baris berikutnya diisi oleh data sebanyak hasil eksekusi SQL diatasnya.
$sql_tot = mysql_query("SELECT COUNT(*) as Num FROM $table");
$total_results = mysql_result($sql_tot,0);
$total_pages = ceil($total_results / $max_results);
$total_result berfungsi mengambil isi data dari hasil query $sql_tot. $total_pages diisi dengan hasil dari pembagian $total_result dengan $max_result dibulatkan keatas (ceil) hasilnya adalah banyaknya page yang ditampilkan, 1 2 3 4 5 dan seterusnya.
/* bangun Previous link */
if($hal > 1){
$prev = ($page - 1);
echo "Sebelumnya ";
}
Jika $hal lebih besar dari 1, jadi gini jika nilai hal adalah 1 maka link "sebelumnya" tidak ditampilkan. Kalau $hal lebih besar dari 1 baru akan muncul. Untuk bisa saja diganti dengan , dengan $prev adalah nilai $page dikurangi 1, ya iyalah namanya juga sebelumnya.
/* bangun Halaman per page */
for($i = 1; $i <= $total_pages; $i++){
if(($hal) == $i){ // untuk halaman yang terpilih
echo "$i "; // maka cetak tebal
} else { // jika tidak maka
echo "$i ";
} // dibuatkan link dimana hal diisi sesuai nilai tertentu sampai
} // nilai itu sama dengan total page-nya
Lanjut mang..
/* bangun Next link */
if($hal < $total_pages){
$next = ($page + 1);
echo " Selanjutnya";
}
Sama prinsipnya dengan link "sebelumnya", jika nilai hal lebih kecil dari total page-nya maka link "Selanjutnya" dimunculkan. Terima Kasih... Mangga diulik lagi, Semoga bermanfaat...
sumber; www.chayo.my-php.net
Tidak ada komentar:
Posting Komentar