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

Minggu, 24 Oktober 2010

Ide Membuat Script PHP untuk Pencarian dengan Multi Kategori

Dalam suatu aplikasi yang terkait dengan database, seringkali muncul fasilitas untuk pencarian data. Untuk mempersempit scope pencarian biasanya pencarian dilakukan berdasarkan kategori tertentu. Kategori pencarian bisa bersifat single category artinya hanya berdasar satu kategori pencarian saja atau ada yang bersifat multiple category atau multi kategori dimana user bisa melakukan pencarian berdasarkan lebih dari satu kategori.

Untuk membuat fasilitas pencarian berdasarkan satu kategori pada prinsipnya mudah. Sebagai contoh misalkan pencarian data mahasiswa, dimana user bisa melakukan pencarian berdasarkan salah satu dari kategori NIM, nama mahasiswa, alamat, jenis kelamin atau yang lain. Dalam hal ini (single category), prinsipnya hanyalah menggunakan statement kondisional saja. Jika yang dipilih adalah kategori NIM, maka jalankan query pencarian data berdasarkan kategori NIM. Jika yang dipilih adalah kategori nama mahasiswa, maka jalankan query pencarian data berdasarkan nama mahasiswa dan seterusnya. Saya kira mudah… dan tidak ada masalah.

Namun… bagaimana bila pencariannya berdasarkan multi kategori? misalkan user ingin mencari tahu siapa saja sih mahasiswa yang beralamat di Solo dan berjenis kelamin laki-laki misalnya Kalau kita terapkan logika seperti halnya pada single kategori, maka akan sulit diimplementasikan. Mengapa sulit? ya.. karena akan banyak kemungkinan yang terjadi dalam pemilihan kategorinya. Coba bayangkan, seandainya untuk data mahasiswa terdapat 10 buah field. Untuk single kategori, tidak ada masalah karena kemungkinkan pemilihan kategorinya ada 10 buah (Anda membuat statement kondisional sebanyak 10 buah). Namun.. jika menggunakan multi kategori, wah… bisa-bisa Anda pusing karena terlalu banyak kemungkinannya si user tadi memilih kategorinya. Hitung-hitung ada sekitar jutaan kemungkinan. wow… capee dehh… 

Sebagai gambaran saja, seperti apa pencarian multi kategori itu, bisa Anda lihat pada gambar di bawah ini.

Gambar di atas menggambarkan pencarian data mahasiswa, dimana user bisa memilih kategori pencarian lebih dari satu. Dalam contoh di atas terdapat 4 kategori, dimana user dapat mengkombinasikannya sesuai keinginan. Perhatikan, bahwa gambar di atas menunjukkan si user ingin mencari mahasiswa bernama ‘Joko’ yang beralamat di ‘Solo’. Kalau dihitung-hitung ada sebanyak 24 buah total pilihan yang mungkin dipilih user. Kalau Anda buat ke 24 kemungkinan tersebut dengan statement kondisional wah… repot 

Nah… pada artikel ini akan dibahas bagaimana trik untuk membuat script guna keperluan pencarian multi kategori tersebut. Untuk mudahnya kita akan menerapkannya ke studi kasus saja. Studi kasus yang dipilih sama seperti contoh pada gambar di atas saja yah.. supaya mudah.

OK.. pertama.. kita siapkan databasenya terlebih dahulu, beserta tabelnya. Kalau perlu recordnya sekalian untuk contoh saja.

CREATE TABLE mhs (
nim varchar(10),
namamhs varchar(30)
alamat text,
sex varchar(10),
PRIMARY KEY  (nim)
);

INSERT INTO `mhs` VALUES ('M0197001', 'ROSIHAN ARI YUANA', 'COLOMADU', 'L');
INSERT INTO `mhs` VALUES ('M0197002', 'DWI AMALIA FITRIANI', 'KUDUS', 'P');
INSERT INTO `mhs` VALUES ('M0197003', 'FAZA FAUZAN KH.', 'COLOMADU', 'L');
INSERT INTO `mhs` VALUES ('M0197004', 'NADA HASANAH', 'COLOMADU', 'P');
INSERT INTO `mhs` VALUES ('M0197005', 'MUH. AHSANI TAQWIM', 'COLOMADU', 'L'); 



Selanjutnya kita siapkan form pencariannya.

Dalam suatu aplikasi yang terkait dengan database, seringkali muncul fasilitas untuk pencarian data. Untuk mempersempit scope pencarian biasanya pencarian dilakukan berdasarkan kategori tertentu. Kategori pencarian bisa bersifat single category artinya hanya berdasar satu kategori pencarian saja atau ada yang bersifat multiple category atau multi kategori dimana user bisa melakukan pencarian berdasarkan lebih dari satu kategori.

Untuk membuat fasilitas pencarian berdasarkan satu kategori pada prinsipnya mudah. Sebagai contoh misalkan pencarian data mahasiswa, dimana user bisa melakukan pencarian berdasarkan salah satu dari kategori No. Induk, nama mahasiswa, alamat, jenis kelamin atau yang lain. Dalam hal ini (single category), prinsipnya hanyalah menggunakan statement kondisional saja. Jika yang dipilih adalah kategori NIS, maka jalankan query pencarian data berdasarkan kategori NIS. Jika yang dipilih adalah kategori nama mahasiswa, maka jalankan query pencarian data berdasarkan nama mahasiswa dan seterusnya. Saya kira mudah… dan tidak ada masalah.

Namun… bagaimana bila pencariannya berdasarkan multi kategori? misalkan user ingin mencari tahu siapa saja sih mahasiswa yang beralamat di Solo dan berjenis kelamin laki-laki misalnya :-) Kalau kita terapkan logika seperti halnya pada single kategori, maka akan sulit diimplementasikan. Mengapa sulit? ya.. karena akan banyak kemungkinan yang terjadi dalam pemilihan kategorinya. Coba bayangkan, seandainya untuk data mahasiswa terdapat 10 buah field. Untuk single kategori, tidak ada masalah karena kemungkinkan pemilihan kategorinya ada 10 buah (Anda membuat statement kondisional sebanyak 10 buah). Namun.. jika menggunakan multi kategori, wah… bisa-bisa Anda pusing karena terlalu banyak kemungkinannya si user tadi memilih kategorinya. Hitung-hitung ada sekitar jutaan kemungkinan. wow… capee dehh… :-)

Sebagai gambaran saja, seperti apa pencarian multi kategori itu, bisa Anda lihat pada gambar di bawah ini.

Photobucket

Gambar di atas menggambarkan pencarian data mahasiswa, dimana user bisa memilih kategori pencarian lebih dari satu. Dalam contoh di atas terdapat 4 kategori, dimana user dapat mengkombinasikannya sesuai keinginan. Perhatikan, bahwa gambar di atas menunjukkan si user ingin mencari mahasiswa bernama ‘Joko’ yang beralamat di ‘Solo’. Kalau dihitung-hitung ada sebanyak 24 buah total pilihan yang mungkin dipilih user. Kalau Anda buat ke 24 kemungkinan tersebut dengan statement kondisional wah… repot :-)

Nah… pada artikel ini akan dibahas bagaimana trik untuk membuat script guna keperluan pencarian multi kategori tersebut. Untuk mudahnya kita akan menerapkannya ke studi kasus saja. Studi kasus yang dipilih sama seperti contoh pada gambar di atas saja yah.. supaya mudah.

OK.. pertama.. kita siapkan databasenya terlebih dahulu, beserta tabelnya. Kalau perlu recordnya sekalian untuk contoh saja.
view sourceprint?
01.CREATE TABLE siswa (
02. nis varchar(10),
03. namasiswa varchar(30)
04. alamat text,
05. sex varchar(10),
06. PRIMARY KEY (nim)
07.);
08.
09.INSERT INTO `mhs` VALUES ('M0197001', 'ROSIHAN ARI YUANA', 'COLOMADU', 'L');
10.INSERT INTO `mhs` VALUES ('M0197002', 'DWI AMALIA FITRIANI', 'KUDUS', 'P');
11.INSERT INTO `mhs` VALUES ('M0197003', 'FAZA FAUZAN KH.', 'COLOMADU', 'L');
12.INSERT INTO `mhs` VALUES ('M0197004', 'NADA HASANAH', 'COLOMADU', 'P');
13.INSERT INTO `mhs` VALUES ('M0197005', 'MUH. AHSANI TAQWIM', 'COLOMADU', 'L');

Selanjutnya kita siapkan form pencariannya.

form.html

Cari Data Siswa

Pilih kategori pencarian
No. Induk
Nama Siswa
Alamat
Jenis Kelamin Laki-Laki Perempuan

<h1>Cari Data Siswa</h1>

<p>Pilih kategori pencarian</p>
 
<form method="post" action="proses.php">
<table>
   <tr><td><input type="checkbox" name="nimCat"> No. Induk</td><td><input type="text" name="nim"></td></tr>
   <tr><td><input type="checkbox" name="namaCat"> Nama Siswa</td><td><input type="text" name="nama"></td></tr>
   <tr><td><input type="checkbox" name="alamatCat"> Alamat</td><td><input type="text" name="alamat"></td></tr>
   <tr><td><input type="checkbox" name="sexCat"> Jenis Kelamin</td><td><input type="radio" name="sex" value="L"> Laki-Laki <input type="radio" name="sex" value="P"> Perempuan</td></tr>
   <tr><td></td><td><input type="submit" name="submit" value="Submit"></td></tr>
</table>
</form>
 

Menjumlahkan Isi Data di PHP

Catatan Penting:
Data yang dapat dijumlahkan harus berupa angka atau data string yang dapat diubah menjadi angka ( string yang terdiri atas huruf-huruf angka ).
Untuk menjumlahkan data yang berupa angka, entah itu integer atau bulat, currency atau uang, atau pecahan yang berupa tipe float atau double, dapat dilakukan dengan skrip PHP.
Untuk tipe array, dapat dilakukan penjumlahan biasa
Untuk yang berupa record database, dapat dilakukan dengan pengulangan atau iterasi.
Untuk array:
misal: $ar_angka adalah nama variabel array angka:
function jumlahkan_array($ar_angka){
$res = 0;
for($i=0;$i>=count($ar_angka);$i++){
$res = $res + $ar_angka[$i];
}
return $res;
}
pengunaan: echo jumlahkan_array($ar_angka);
untuk record (database mysql):
function jumlahkan_record($sql_result,$judul_assosiasi){
$res = 0;
$reccount = mysql_num_rows($sql_result);
$rec = mysql_fetch_array($sql_result,MYSQL_ASSOC);
for($i=0;$i>=$reccount-1;$i++){
$res = $res + $res[$judul_assosiasi];
}
return $res;
}
penggunaan:
$sql = “SELECT * FROM `penjualan`”;
$qry = mysql_query($sql);
if($qry){
echo jumlahkan_record($qry,’total’);
}else{
echo mysql_error();
}
Salam bahagia
Sabtu, 23 Oktober 2010

Script Proses Edit File Yang Telah Diupload Ke Database MySQL

eberapa waktu yang lalu, saya pernah memaparkan teknik untuk membuat script PHP untuk proses upload dan download file ke dalam database MySQL. Nah… pada artikel kali ini, akan saya paparkan hal yang masih kelanjutan dari artikel tersebut, yaitu proses update file yang telah diupload.
Pada prinsipnya proses update file yang telah terupload ke MySQL ini sama ketika proses uploadnya. Bedanya hanya pada query SQL nya saja. Ketika proses upload, kita gunakan query INSERT sedangkan untuk proses updatenya kita gunakan UPDATE. :-) seperti halnya jika kita edit/update data pada umumnya. Mudah bukan??

OK… let’s begin..
Andaikan kita punya tabel upload sebagai berikut ini:
01.CREATE TABLE `upload` (
02.  `id` int(11) auto_increment,
03.  `name` varchar(30),
04.  `type` varchar(30),
05.  `size` int(11),
06.  `dateupload` date,
07.  `content` longblob,
08.  `keterangan` text,
09.  PRIMARY KEY  (`id`)
10.)
Keterangan:
field ‘name’ menunjukkan nama file yang diupload, ‘type’ adalah tipe/jenis file yang diupload, ‘size’ adalah ukuran file, ‘dateupload’ menunjukkan tanggal upload, ‘content’ adalah isi dari file, dan ‘keterangan’ menunjukkan deskripsi dari file.
Karena struktur tabelnya agak beda dengan artikel sebelumnya, maka kita mulai lagi pembahasannya dari membuat script upload nya dahulu.
formupload.htm
01.<h1>Upload File</h1>
02. 
03.<form method="post" enctype="multipart/form-data" action="upload.php">
04.   Pilih File <br>
05.   <input name="userfile" type="file"><br>
06.   Keterangan:<br>
07.   <textarea name="keterangan"></textarea><br>
08.   <input name="upload" type="submit" value="Upload">
09.</form>
Tampilan dari halaman upload di atas adalah sbb:
script upload file
Untuk menghubungkan script PHP ke MySQL, kita buat dulu script koneksi
koneksi.php
1.<?php
2.// koneksi ke mysql
3.mysql_connect('dbhost','dbuser','dbpass');
4.mysql_select_db('dbname');
5.?>
Berikutnya kita buat script untuk proses uploadnya
upload.php
01.<?php
02.// koneksi ke mysql
03.include "koneksi.php";
04. 
05.// membaca tanggal sekarang
06.$tanggal = date("Y-m-d");
07. 
08.// membaca keterangan
09.$ket = $_POST['ket'];
10. 
11.// membaca nama file
12.$fileName = $_FILES['userfile']['name'];    
13. 
14.// membaca nama file temporary
15.$tmpName  = $_FILES['userfile']['tmp_name'];
16. 
17.// membaca size file
18.$fileSize = $_FILES['userfile']['size'];
19. 
20.// membaca tipe file
21.$fileType = $_FILES['userfile']['type'];
22. 
23.// membaca isi file yang diupload
24.$fp  = fopen($tmpName, 'r');
25.$content = fread($fp, filesize($tmpName));
26.$content = addslashes($content);
27.fclose($fp);
28. 
29.// query SQL untuk menyimpan isi file dan informasi lainnya ke database
30. 
31.$query = "INSERT INTO upload (name, size, type, content, dateupload, keterangan)
32.          VALUES ('$fileName', '$fileSize', '$fileType', '$content', '$tanggal', '$ket')";
33. 
34.$hasil = mysql_query($query);
35. 
36.// konfirmasi proses upload
37.if ($hasilecho "<p>File ".$fileName." telah terupload</p>";
38.else echo "<p>File ".$fileName." gagal diupload</p>";
39. 
40.?>
Setelah file terupload, maka ada baiknya kita buat script untuk menampilkan daftar file yang sudah diupload. Di dalam daftar itu nanti kita coba tampilkan nomor ID file, nama file, tanggal diupload, serta link untuk proses update filenya. Oya, nanti di nama file, kita sertakan link untuk proses downloadnya.
Ini dia script untuk menampilkan daftar filenya
list.php
01.<?php
02.// koneksi ke mysql
03.include "koneksi.php";
04. 
05.echo "<h2>Daftar File Upload</h2>";
06. 
07.// query untuk membaca semua file yang terupload
08.$query = "SELECT * FROM upload";
09.$hasil = mysql_query($query);
10. 
11.// menampilkan daftar file
12.echo "<table border='1'>";
13.echo "<tr><th>ID</th><th>Nama File</th><th>Tanggal Upload</th><th>Keterangan</th><th>Action</th></tr>";
14.while ($data = mysql_fetch_array($hasil))
15.{
16.    echo "<tr><td>".$data['id']."</td><td><a href='download.php?id=".$data['id']."'>".$data['name']."</a></td><td>".$data['dateupload']."</td><td>".$data['ket']."</td><td><a href='edit.php?id=".$data['id']."'>Edit</a></td></tr>";
17.}
18.echo "</table>";
19. 
20.?>
Keterangan: Jangan lupa untuk menyertakan parameter nomor ID file pada link proses download dan updatenya. Karena nomor ID ini nanti akan digunakan untuk mengidentifikasi file mana yang akan didownload atau diupdate.
Berikut ini tampilan dari daftar file yang diupload.
script upload file
Untuk proses downloadnya, kita buat script berikut ini
download.php
01.<?php
02. 
03.// koneksi ke mysql
04.include "koneksi.php";
05. 
06.// membaca nilai ID file yang berasal dari link download.php?id=...
07.$id      = $_GET['id'];
08. 
09.// query untuk membaca data file berdasarkan ID
10.$query   = "SELECT * FROM upload WHERE id = $id";
11. 
12.$hasil   = mysql_query($query);
13.$data    = mysql_fetch_array($hasil);
14. 
15.// mengenerate proses download file
16.header("Content-Disposition: attachment; filename=".$data['name']);
17.header("Content-length: ".$data['size']);
18.header("Content-type: ".$data['type']);
19. 
20.echo $data['content'];
21. 
22.?>
Sedangkan untuk proses edit file, kita arahkan linknya menuju form edit
edit.php
01.<h1>Edit File</h1>
02. 
03.<?php
04.// koneksi ke mysql
05.include "koneksi.php";
06. 
07.// membaca ID file yang akan diedit
08.$id = $_GET['id'];
09. 
10.// membaca data deskripsi dari file
11.// deskripsi ini nanti akan ditampilkan di form edit
12. 
13.$query = "SELECT keterangan FROM upload WHERE id = '$id'";
14.$hasil = mysql_query($query);
15.$data  = mysql_fetch_array($hasil);
16.?>
17. 
18.<form method="post" enctype="multipart/form-data" action="update.php">
19.Pilih File <br>
20.<input name="userfile" type="file"><br>
21.Keterangan:<br>
22.<textarea name="ket"><?php echo $data['keterangan']; ?></textarea>
23.<input type="hidden" name="id" value="<?php echo $id; ?>">
24.<br>
25.<input name="submit" type="submit" value="Update">
26.</form>
Nah.. selanjutnya kita buat script update nya. Untuk idenya, sebelum proses update, kita harus mengecek dahulu apakah filenya diupdate atau tidak, ataukah hanya deskripsi (keterangan) filenya saja. Jika filenya tidak diupdate, maka kita hanya gunakan query untuk update deskripsinya saja.
Untuk mengecek apakah filenya diupdate atau tidak, kita hanya ngecek file size nya saja. Jika filenya diupdate, maka file sizenya tidak sama dengan 0. Namun jika file sizenya sama dengan 0 maka file tidak diupdate.
Mengapa menggunakan logika tsb? Ya… karena file size sama dengan 0 itu maksudnya user tidak memilih file baru untuk diupload menggantikan file lama.
OK… sekarang kita terapkan ide tersebut
update.php
01.<?php
02. 
03.// koneksi ke mysql
04.include "koneksi.php";
05. 
06.// membaca tanggal sekarang
07.$tanggal = date("Y-m-d");
08. 
09.// membaca ID file yang akan diupdate
10.$id = $_POST['id'];
11. 
12.// membaca keterangan
13.$ket = $_POST['ket'];
14. 
15.// membaca size file
16.$fileSize = $_FILES['userfile']['size'];
17. 
18.if ($fileSize > 0)
19.{
20.  // jika file size > 0 maka proses update file dilakukan
21. 
22.  // membaca nama file
23.  $fileName = $_FILES['userfile']['name'];    
24. 
25.  // membaca nama file temporary
26.  $tmpName  = $_FILES['userfile']['tmp_name'];
27. 
28.  // membaca tipe file
29.  $fileType = $_FILES['userfile']['type'];
30. 
31.  // membaca isi file yang diupload
32.  $fp      = fopen($tmpName, 'r');
33.  $content = fread($fp, filesize($tmpName));
34.  $content = addslashes($content);
35.  fclose($fp);
36. 
37.  // query SQL untuk update data file
38. 
39.  $query = "UPDATE upload
40.            SET name = '$fileName', size = '$fileSize', type = '$fileType', content = '$content',
41.                dateupload = '$tanggal', keterangan = '$ket'
42.            WHERE id = '$id'";
43.}
44.else
45.{
46.   // jika file size tidak lebih besar dari 0 maka hanya deskripsi file nya saja yang diupdate
47.   $query = "UPDATE upload SET keterangan = '$ket' WHERE id = '$id'";
48.}
49. 
50.// jalankan query update
51.$hasil = mysql_query($query);
52. 
53.// konfirmasi proses upload
54.if ($hasilecho "<p>Berhasil diupdate</p>";
55.else echo "<p>Gagal diupdate</p>";
56. 
57.?>
Selesai dah membuat script update filenya… prinsipnya sama kan dengan proses update data seperti umumnya? OK selamat mengembangkan sendiri ya..

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…

Membuat Guestbook dengan PHP

Pengenalan PHP
Tutorial yang saya tulis kali ini berhubungan dunia website yang menggunakan bahasa PHP. Sebelum masuk ke tips dan trik PHP, saya ingin berbagi sekilas tentang PHP. Ada beberapa pengertian tentang PHP. Akan tetapi, kurang lebih PHP dapat diartikan sebagai PHP Hypertext Preeprocesor. Ini merupakan bahasa yang hanya dapat berjalan pada server yang hasilnya dapat ditampilkan pada klien. Interpreter PHP dalam mengeksekusi kode PHP pada sisi server (server-side) berbeda dengan mesin maya java yang mengeksekusi program pada sisi klien (client-side).
Oke deh langsung ke tutor aja, lebih lengkap bisa di googling aja, ntar malah pada kabur he3x, ini adalah contoh script php.
<?php
echo "<b>Hello World</b>" ;
echo "<b>Halo Dunia</b>" ;
?>
penulisan <?php bisa juga tidak diikuti tulisan “php” jd bisa diawali “<?”dan diakhiri “?>”.
Lanjut, berikutnya langsung ke studi kasus, yaitu membuat halaman buku tamu. Berikut contoh programnya :
Buat database dengan nama “latihan”
Nama Field Tipe Data Ukuran Keterangan
id int 11 Primary Key, NOT NULL, AUTO_INCREMENT
nama varchar 25 NOT NULL
email varchar 50 NOT NULL
tanggal date
NOT NULL
pesan varchar 250 NOT NULL
Buat halaman seperti berikut :
Atau tulis code programnya (guestbook.php):
<html>
<head>
<title>guestbook</title>
</head>

<body>
<p>Silahkan Tulis Komentar Anda di sini : </p>
<form id="form1" name="form1" method="post" action="input_pesan.php">
<table width="357" border="0" cellspacing="1">
<tr>
<td width="99">Nama</td>
<td width="6">:</td>
<td width="242"><input name="nama" type="text" id="nama" size="40" /></td>
</tr>
<tr>
<td>Email</td>
<td>:</td>
<td><input name="email" type="text" id="email" size="40" /></td>
</tr>
<tr>
<td>Komentar</td>
<td>:</td>
<td><textarea name="komentar" cols="37" rows="8" id="komentar"></textarea></td>
</tr>
<tr>
<td>&amp;amp;amp;amp;amp;amp;amp;nbsp;</td>
<td>&amp;amp;amp;amp;amp;amp;amp;nbsp;</td>
<td><input type="submit" name="Submit" value="Simpan" />
<input type="reset" name="Submit2" value="Batal" /></td>
</tr>
</table>
</form>
</body>
</html>
Kemudian buat file php dengan nama “input_pesan.php“dan tuliskan code program berikut ini :
<?php
//AWAL KODE PROGRAM KONEKSI DATABASE
$host='localhost';
$user='root';
$pass='12345678';
$db='latihan';

mysql_connect($host,$user,$pass) or die ("Tidak terkoneksi ke Server");
mysql_select_db($db) or die ("Database tidak ditemukan");
//AKHIR KODE PROGRAM KONEKSI DATABASE

$valid_mail = "^([._a-z0-9-]+[._a-z0-9-]*)@(([a-z0-9-]+.)*([a-z0-9-]+)(.[a-z]{2,3}))$";
if (!eregi($valid_mail, $_POST['email'])||empty($_POST['nama'])||empty($_POST['pesan'])) {
$error = TRUE;
}
if ($error) {
if(empty($_POST['nama'])){
echo "<li>Anda belum mengisi <b>Form Nama</b></li>";
}
if (!eregi($valid_mail, $_POST['email'])){
echo "<li>Penulisan alamat E-mail Anda salah!</li>";
}
if(empty($_POST['pesan'])){
echo "<li>Anda belum menuliskan <b>Komentar Anda</b></li>";
}
}
else{
$lindungi_nama=strip_tags($_POST[nama]);
$lindungi_email=strip_tags($_POST[email]);
$lindungi_pesan=strip_tags($_POST[pesan],"<br />");
$tanggal_sekarang=date("Ymd");

$query = "INSERT INTO guestbook (nama , email, tanggal, pesan)
VALUES ('$lindungi_nama','$lindungi_email','$tanggal_sekarang','$lindungi_pesan')";
$result = mysql_query($query);

if ($result) {
//MENAMPILKAN GUESTBOOK
echo "<b>Pesan Anda berhasil disimpan..!!!</b>";
$query = "SELECT * FROM guestbook ORDER BY id DESC";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
echo   "<p><b>Nama :</b> $row[nama]<br>
<b>Email :</b> $row[email]<br><b>Tanggal :</b> $row[tanggal]<br>
<b>Pesan :</b> $row[pesan]<br>";
}
}
else {
echo "Maaf pesan Anda tidak dapat disimpan...!!!!";
}
}
?>
Pada guestbook diatas penggunaan syntax html tidak akan dieksekusi, karena dengan fungsi “strip_tags” dapat menghilangkan kode-kode html atau php yang dimasukan oleh pemakai melalui keyboard.

Blog Archive