About Me

Foto Saya
Suparno, M.Pd
Lihat profil lengkapku
Diberdayakan oleh Blogger.

Text Widget

Sample Text

Pengikut

Popular Posts

Blogger templates

Download

Ordered List

Recent Posts

Unordered List

Sabtu, 23 Oktober 2010

Membuat Nomor Urut Hasil Query di PHP (Combined with Paging)

Baru memposting artikel tentang membuat nomor urut hasil query di PHP beberapa hari yang lalu, eh… ada yang berkomentar di artikelnya “Kok kalo dikombinasikan dengan paging, nomor urutnya balik mulai dari 1 lagi untuk setiap halamannya ya?:-)
He.. 3x makasih buat Anda yang telah berkomentar. Atas komentar itulah saya buat artikel ini yang merupakan kelanjutan artikel sebelumnya. Kali ini nomor urut hasil query akan diterapkan dalam konsep paging. Untuk lebih menyingkat pembahasan, alangkah baiknya kita gunakan konsep advanced paging yang pernah dibahas di blog ini sebelumnya.
Di sini dimisalkan kita memiliki struktur tabel yang sama seperti yang dibahas di advanced paging, dan script yang sama pula. Namun… kita sedikit akan melakukan modifikasi pada script tersebut supaya memunculkan nomor urutnya.
OK… untuk menampilkan nomor urut di setiap halaman, konsepnya adalah dengan memanfaatkan nomor halaman dan jumlah data yang ditampilkan pada setiap halamannya. Mengapa kedua hal tersebut digunakan? ya… misalkan Anda ingin menampilkan data per halamannya adalah 5 buah. Untuk halaman 1, tentu nomor urut datanya adalah mulai dari 1 yaitu 1, 2, 3, 4, 5. Sedangkan untuk halaman 2, nomor halamannya mulai dari 6, yaitu 6, 7, 8, 9, 10. Dab halaman 3, nomor halamannya mulai dari 11, yaitu 11, 12, 13, 14, 15 begitu seterusnya.
Nah.. bisa tidak Anda membaca hubungan antara nomor urut awal yang tampil di setiap halaman dengan nomor halamannya? OK.. kalau tidak bisa, ini saya kasih clue nya
1 = 1 + 0 . 4
6 = 2 + 1 . 4
11 = 3 + 2 . 4
.
.
dst
Sudah bisa membaca hubungan ketiganya bukan? Ya… hubungan secara umum adalah sbb:
i = p + (p-1) . (n-1)
dengan i adalah nomor urut awal pada halaman ke-p. Sedangkan n adalah jumlah data yang ditampilkan pada setiap halaman.
Setelah kita dapat hubungan antara nomor urut awal dengan nomor halamannya, ya… udah deh, kita tinggal modifikasi script paging nya saja.
Dari artikel advanced paging, kita tambahkan beberapa kode untuk menampilkan nomor urut datanya, dan menjadi seperti di bawah ini
01.<?php
02.mysql_connect('namahost', 'dbuser', 'dbpassword');
03.mysql_select_db('dbname');
04. 
05.// jumlah data yang akan ditampilkan per halaman
06.$dataPerPage = 5;
07. 
08.// apabila $_GET['page'] sudah didefinisikan, gunakan nomor halaman tersebut,
09.// sedangkan apabila belum, nomor halamannya 1.
10. 
11.if(isset($_GET['page']))
12.{
13.    $noPage = $_GET['page'];
14.}
15.else $noPage = 1;
16. 
17.$offset = ($noPage - 1) * $dataPerPage;
18. 
19.$query = "SELECT * FROM guestbook LIMIT $offset, $dataPerPage";
20. 
21.$result = mysql_query($query) or die('Error');
22. 
23.// membaca nomor halaman
24.$noPage = $_GET['page'];
25. 
26.// membuat nomor urut awal di setiap halaman berdasarkan formula di atas
27.$i = $noPage + ($noPage - 1) * ($dataPerPage - 1);
28. 
29.// menampilkan data dan nomor urutnya
30.echo "<table border='1'>";
31.echo "<tr><td>No.</td><td>Nama</td><td>Email</td><td>Tanggal</td><td>Komentar</td></tr>";
32.while($data = mysql_fetch_array($result))
33.{
34.   echo "<tr><td>".$i."</td><td>".$data['nama']."</td><td>".$data['email']."</td><td>".$data['tanggal']."</td><td>".$data['komentar']."</td></tr>";
35.   $i++;   // increment untuk nomor urut data
36.}
37. 
38.echo "</table>";
39. 
40.$query   = "SELECT COUNT(*) AS jumData FROM guestbook";
41.$hasil  = mysql_query($query);
42.$data     = mysql_fetch_array($hasil);
43. 
44.$jumData = $data['jumData'];
45. 
46.$jumPage = ceil($jumData/$dataPerPage);
47. 
48.if ($noPage > 1) echo  "<a href='".$_SERVER['PHP_SELF']."?page=".($noPage-1)."'>&lt;&lt; Prev</a>";
49. 
50.for($page = 1; $page <= $jumPage; $page++)
51.{
52.         if ((($page >= $noPage - 3) && ($page <= $noPage + 3)) || ($page == 1) || ($page == $jumPage))
53.         {
54.            if (($showPage == 1) && ($page != 2))  echo "...";
55.            if (($showPage != ($jumPage - 1)) && ($page == $jumPage))  echo "...";
56.            if ($page == $noPage) echo " <b>".$page."</b> ";
57.            else echo " <a href='".$_SERVER['PHP_SELF']."?page=".$page."'>".$page."</a> ";
58.            $showPage = $page;
59.         }
60.}
61. 
62.if ($noPage < $jumPage) echo "<a href='".$_SERVER['PHP_SELF']."?page=".($noPage+1)."'>Next &gt;&gt;</a>";
63. 
64.?>
Nah.. mudah bukan membuatnya? Dalam dunia programming, Anda harus jeli dalam melihat keterkaitan antara input dengan outputnya supaya muncul formulasi ide dalam penyelesaiannya.
OK… selamat mencoba ya…

0 komentar:

Posting Komentar

Blog Archive