tutorial menyimpan data ke file teks

6
http://rosihanari.net TUTORIAL MENYIMPAN DATA PADA FILE TEKS Studi Kasus pada Pembuatan Buku Tamu (Guestbook) Bagi Anda, tentu istilah buku tamu tidak asing lagi. Fasilitas ini seringkali muncul pada situs-situs web pribadi. Mekanisme yang terjadi dalam buku tamu ini sangat sederhana, yaitu hanya menyimpan komentar-komentar yang ditulis oleh pengunjung situs, lalu komentar-komentar tersebut ditampilkan dalam halaman web. Beberapa buku tamu menggunakan database, seperti MySQL atau yang lain, sebagai media penyimpanan data komentar. Namun, kadangkala beberapa webhosting tidak menyediakan MySQL untuk pendukung situs web. Lantas bagaimana cara menyimpan data komentar buku tamu? Nah… ada alternatif cara untuk membuat buku tamu tanpa menggunakan database, yaitu dengan memanfaatkan file teks. Data komentar yang diisikan oleh pengunjung dalam buku tamu, nantinya akan disimpan dalam sebuah file teks. Sebelum Anda belajar membuat buku tamu dengan file teks ini, ada baiknya Anda harus memahami dasar-dasar operasi file dengan PHP. Dasar-dasar operasi file ini, meliputi bagaimana cara membuka file, membaca, dan menulis data ke file. Pembahasan tentang materi ini bisa Anda pelajari di PHP TUTORIAL 10 yang sudah saya tulis. Anda dapat mendownload dan membaca tutorialnya di http://rosihanari.net/web-tutorial/ OK… sekarang kita mulai membuat form untuk input buku tamu. Berikut ini adalah code htmlnya index.htm <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Buku Tamu Dengan File Teks</title> </head> <body> <h1>Buku Tamu</h1> <form method="post" action="simpan.php"> <table border="0"> <tr><td>Nama Anda</td><td><input type="text" name="nama" /></td></tr> <tr><td>E-mail</td><td><input type="text" name="email" /></td></tr> <tr><td valign="top">Komentar</td><td><textarea name="komentar"> </textarea></td></tr> <tr><td></td><td><input type="submit" name="submit" value="Submit" /> </td></tr> </table>

Upload: yamin-surya-hasibuan

Post on 22-Jan-2016

220 views

Category:

Documents


0 download

DESCRIPTION

Studi Kasus pada Pembuatan Buku Tamu

TRANSCRIPT

Page 1: Tutorial Menyimpan Data Ke File Teks

http://rosihanari.net

TUTORIAL MENYIMPAN DATA PADA FILE TEKS

Studi Kasus pada Pembuatan Buku Tamu (Guestbook)

Bagi Anda, tentu istilah buku tamu tidak asing lagi. Fasilitas ini seringkali muncul pada situs-situs web pribadi. Mekanisme yang terjadi dalam buku tamu ini sangat sederhana, yaitu hanya menyimpan komentar-komentar yang ditulis oleh pengunjung situs, lalu komentar-komentar tersebut ditampilkan dalam halaman web. Beberapa buku tamu menggunakan database, seperti MySQL atau yang lain, sebagai media penyimpanan data komentar. Namun, kadangkala beberapa webhosting tidak menyediakan MySQL untuk pendukung situs web. Lantas bagaimana cara menyimpan data komentar buku tamu? Nah… ada alternatif cara untuk membuat buku tamu tanpa menggunakan database, yaitu dengan memanfaatkan file teks. Data komentar yang diisikan oleh pengunjung dalam buku tamu, nantinya akan disimpan dalam sebuah file teks. Sebelum Anda belajar membuat buku tamu dengan file teks ini, ada baiknya Anda harus memahami dasar-dasar operasi file dengan PHP. Dasar-dasar operasi file ini, meliputi bagaimana cara membuka file, membaca, dan menulis data ke file. Pembahasan tentang materi ini bisa Anda pelajari di PHP TUTORIAL 10 yang sudah saya tulis. Anda dapat mendownload dan membaca tutorialnya di http://rosihanari.net/web-tutorial/ OK… sekarang kita mulai membuat form untuk input buku tamu. Berikut ini adalah code htmlnya index.htm <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transi tional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitiona l.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Buku Tamu Dengan File Teks</title> </head> <body> <h1>Buku Tamu</h1> <form method="post" action=" simpan.php"> <table border="0"> <tr><td>Nama Anda</td><td><input type="text" name =" nama" /></td></tr> <tr><td>E-mail</td><td><input type="text" name=" email" /></td></tr> <tr><td valign="top">Komentar</td><td><textarea n ame="komentar"> </textarea></td></tr> <tr><td></td><td><input type="submit" name="submi t" value="Submit" /> </td></tr> </table>

Page 2: Tutorial Menyimpan Data Ke File Teks

http://rosihanari.net

</form> </body> </html>

Pada studi kasus buku ini, terdapat 3 input yang nantinya dimasukkan oleh user yang mengisi buku tamu, yaitu nama, email dan komentar. Selanjutnya, file teks yang digunakan untuk menyimpan data isian komentar user kita siapkan terlebih dahulu. Bagaimana cara membuatnya? Kita cukup menggunakan Notepad. Caranya adalah buat file baru pada Notepad, kosongkan isinya lalu simpan dengan nama file data.txt atau data.dat (boleh dengan nama file yang lain). Setelah form dan file teks dibuat, langkah berikutnya adalah membuat script simpan.php untuk memproses input data dari form buku tamu. simpan.php <? $namapengirim = strip_tags($_POST['nama']); $emailpengirim = strip_tags($_POST['email']); $komentar = strip_tags($_POST['komentar']); $tanggalkirim = date("d-m-Y"); $namafiledata = 'data.dat'; // membuka file data.dat dengan mode 'append' - 'a' $handle = fopen($namafiledata, 'a'); // menulis data isian ke data.dat $simpan = fwrite($handle, "\n" . $namapengirim . "| ". $emailpengirim ."|". $komentar ."| ". $tanggalkirim); if ($simpan) echo "<p>Isian Anda sudah tersimpan di buku tamu</p>"; else echo "<p>Penyimpanan isian ke buku tamu gagal< /p>"; echo "<p><a href='view.php'>Lihat Isi Buku Tamu</a> </p>"; fclose($handle); ?>

Perhatikan script simpan.php di atas, bahwa input nama, email, dan komentar diberikan perintah strip_tags(); Perintah atau function strip_tags() digunakan untuk menghilangkan tag HTML yang kemungkinan diisikan oleh user. Mengapa hal ini perlu dilakukan? Ya… tidak semua orang yang mengisi buku tamu adalah orang yang berhati baik. Bisa jadi

Page 3: Tutorial Menyimpan Data Ke File Teks

http://rosihanari.net

orang menyisipkan perintah html ke dalam komentar buku tamu Anda. Coba bayangkan seandainya ada orang yang mengisikan komentar buku tamu Anda dengan perintah berikut ini: <img src="http://www.situsporno.com/naked_pictures. jpg" /> Hallo apa kabar?

Tentu saja, setelah orang ‘nakal’ itu melakukan submit form buku tamu, maka buku tamu Anda akan terkena ‘musibah’ ☺. Nah dengan strip_tags(), perintah HTML tersebut akan dinonaktifkan. Perintah $tanggalkirim = date("d-m-Y");

digunakan untuk memperoleh tanggal ketika user tersebut memposting komentar. Tanggal itu nanti akan ditampilkan pada setiap komentar yang muncul. Perintah $namafiledata = 'data.dat'; $handle = fopen($namafiledata, 'a');

Digunakan untuk membuka file bernama data.dat yang telah dibuat sebelumnya dengan Notepad. Anda dapat menggabung 2 perintah di atas menjadi satu, menjadi $handle = fopen('data.dat', 'a'); Dalam hal ini, mode yang digunakan untuk membuka file adalah ‘append’ atau ‘a’, karena data komentar user yang baru akan ditambahkan pada file data.dat. Jangan sekali-kali menggunakan mode ‘write’ atau ‘w’ karena data isian komentar yang sebelumnya tersimpan akan hilang. Perintah $simpan = fwrite($handle, "\n" . $namapengirim . "| ". $emailpengirim ."|". $komentar ."| ". $tanggalkirim);

digunakan untuk menulis data komentar ke dalam file data.dat. Format data yang ditulis ke dalam file tersebut adalah sebagai berikut nama pengirim|email pengirim|komentar|tanggal kirim Tanda ‘|’ digunakan untuk memisahkan antar item data. Anda boleh menggunakan tanda atau simbol yang lain, asal tanda itu jarang digunakan orang dalam menulis komentar.

Page 4: Tutorial Menyimpan Data Ke File Teks

http://rosihanari.net

Sedangkan tanda ‘\n’ (new line) digunakan untuk ganti baris pada setiap data di file teks. Berikut ini efek penggunaan tanda tersebut arie yuana|[email protected]|ini contoh komentar |01-05-2008 yohana|[email protected]|ini contoh komentar|02-05-2 008 amalia|[email protected]|ini contoh komentar|04-05-2 008 Apabila perintah fwrite() di atas tidak menggunakan ‘\n’, maka semua data akan ditulis dalam satu baris. Tentu saja hal ini akan menyulitkan kita untuk membaca data komentar buku tamu. Perintah if ($simpan) echo "<p>Isian Anda sudah tersimpan di buku tamu</p>"; else echo "<p>Penyimpanan isian ke buku tamu gagal< /p>";

digunakan untuk menampilkan konfirmasi apakah data isian buku tamu sudah berhasil disimpan atau belum. Oya, jangan lupa untuk menutup file data.dat yang tadinya dibuka, dengan menggunakan perintah fclose($handle); Mengapa harus ditutup? Ya… hal ini dapat dianalogikan dengan kehidupan sehari-hari, misalnya setelah kita membuka pintu, jangan lupa menutupnya kembali. Atau setelah kita membuka-buka buku, jangan lupa menutupnya kembali supaya buku tidak rusak. ☺ Just kidding… tapi bener lho, apabila file tidak ditutup kemungkinan strukturnya bisa rusak, sehingga beresiko datanya hilang. Hal ini pernah penulis alami sendiri � Catatan Penting: Untuk file teks dalam buku tamu, dalam hal ini adalah data.dat, harus dalam mode writable, atau chmod 777 (dalam unix/linux) dan jangan dalam mode read only. Selanjutnya… kita akan membuat script untuk menampilkan data buku tamu yang telah tersimpan dalam file data.dat view.php <? echo "<h1>Isian Buku Tamu</h1>"; $namafile = "data.dat"; $handle = fopen($namafile, 'r');

Page 5: Tutorial Menyimpan Data Ke File Teks

http://rosihanari.net

while (!feof($handle)) { $barisdata = fgets($handle, filesize($namaf ile));

$pecahdata = explode("|", $barisdata); $namapengirim = $pecahdata[0]; $emailpengirim = $pecahdata[1];

$komentar = $pecahdata[2]; $tanggal = $pecahdata[3]; echo "<table border='0'>"; echo "<tr><td>Nama pengirim</td><td>:</td><td>". $namapengirim."</td></tr>";

echo "<tr><td>Tanggal</td><td>:</td><td>". $tanggal."</td></tr>";

echo "<tr><td>E-mail</td><td>:</td><td>". $emailpengirim."</td></tr>"; echo "<tr><td>Komentar</td><td>:</td><td>". $komentar."</td></tr>"; echo "</table><br />"; } fclose($handle); ?>

Perhatikan script view.php di atas, terutama pada bagian perintah berikut $namafile = "data.dat"; $handle = fopen($namafile, 'r');

Karena script view.php tersebut digunakan untuk menampilkan data komentar, maka mode yang digunakan dalam membuka file data.dat adalah ‘r’ atau ‘read’. Setelah file data.dat dibuka untuk dibaca, lalu perintah berikutnya adalah proses pembacaan data. Proses pembacaan ini terletak dalam blok while (!feof($handle)) { . . . }

Maksud dari while(!feof($handle)) adalah, selama bukan akhir (end of file) dari file data.dat, maka pembacaan data akan dilakukan terus (looping). Pembacaan data dilakukan baris perbaris. Perintah yang digunakan untuk membaca data baris perbaris ini adalah $barisdata = fgets($handle, filesize($namafile));

Setelah satu baris dibaca, selanjutnya disimpan dalam variabel $barisdata.

Page 6: Tutorial Menyimpan Data Ke File Teks

http://rosihanari.net

Namun kita tahu, bahwa untuk setiap baris data yang dibaca dalam file data.dat berformat sebagai berikut nama pengirim|email pengirim|komentar|tanggal kirim Maka langkah selanjutnya adalah memecah baris data tersebut ke dalam item-item. Proses pemecahan ke dalam item menggunakan perintah explode(); $pecahdata = explode("|", $barisdata);

Perhatikan parameter "|" dalam explode() di atas. Tanda tersebut diberikan karena setiap item data dipisahkan dengan tanda "|" . Data yang dipecah/dipisahkan dengan explode(), hasil pecahannya akan berbentuk array. Untuk mengakses item pertama (nama pengirim), maka digunakan $pecahdata[0]. Item email pengirim atau item kedua digunakan $pecahdata[1], dan seterusnya sampai $pecahdata[3] untuk tanggal kirim. Perhatikan perintah berikut ini. $namapengirim = $pecahdata[0]; $emailpengirim = $pecahdata[1]; $komentar = $pecahdata[2]; $tanggal = $pecahdata[3];

Setelah setiap baris data dibaca dan dipecah ke dalam item-item nama, email, komentar dan tanggal, selanjutnya adalah menampilkannya ke dalam halaman web. Perintah untuk menampilkan setiap item data adalah sebagai berikut (menggunakan tabel) echo "<table border='0'>"; echo "<tr><td>Nama pengirim</td><td>:</td><td>". $namapengirim."</td></tr>"; echo "<tr><td>Tanggal</td><td>:</td><td>". $tanggal."</td></tr>"; echo "<tr><td>E-mail</td><td>:</td><td>". $emailpengirim."</td></tr>"; echo "<tr><td>Komentar</td><td>:</td><td>". $komentar."</td></tr>"; echo "</table><br />";

Proses membaca baris data, memecah dan menampilkan item data ini dilakukan atau diulang terus sampai akhir dari file (End of File).