1 Seri Tutorial - PHP 1 PHP, Binatang Apa Tuh? oleh Abdur Rahim Kenapa mesti belajar PHP? Bukannya dengan kemampuan HTML dan Java Script kita sudah bi...
Seri Tutorial - PHP 1 PHP, Binatang Apa Tuh ? oleh Abdur Rahim Kenapa mesti belajar PHP ? Bukannya dengan kemampuan HTML dan Java Script kita sudah bisa bikin situs yang cool ? Pertanyaan ini mestinya muncul dalam benak web designer yang sedang mencoba mencari tahu tentang PHP. Sebagian mungkin memakai PHP sekedar ikut trend, biar hompejnya enggak dibilang ketinggalan zaman. Sebagian yang lain mungkin asalnya sekedar ingin tahu, tapi akhirnya telanjur suka. Banyak alasan, tapi yang jelas PHP menawarkan kemampuan yang cukup komplit, sehingga PHP alone bisa dipakai untuk membuat: 1. Interaktif situs Situs yang memikat biasanya memiliki kemampuan berkomunikasi dengan pengunjungnya, bisa dengan form, guestbook, forum diskusi, pokoknya pengunjung bisa 'bersuara' di sana. 2. Database Web designer yang bukan sekedar hobby biasanya menaruh perhatian besar pada kemampuan database ini. 3. Bikin template (server-side include type) Kalau anda memiliki situs yang sering diupdate, menu-menunya terus bertambah. Biasanya anda akan pusing memikirkan cara meng-update yang efektif. Sebagian memilih memakai frame. Tapi frame bukan pilihan yang cool, terlebih masih ada browser yang nggak mendukung. Oleh karena itu, PHP adalah salah satu alternatif yang memikat. Dan lain-lain. PHP (Pretext Hyper-Processor) berbeda dengan HTML karena dengan PHP kita tidak langsung menuliskan apa yang ingin kita munculkuan di browser. Tetapi kita menuliskan kode yang memerintahkan server untuk memprosesnya dan menghasilkan halaman hompej yang kita inginkan. Dengan kata lain kita dapat membuat hompej yang dinamis, dan mestinya cool abis. Juga sekali server memberikan hasilnya berupa halaman hompej, maka pengunjung situs akan melihat halaman tersebut seperti halaman HTML biasa. Mereka tidak perlu menambah apapun, enggak perlu plug-in sama sekali. Sehingga dengan demikian bisa dibilang 100 % pengunjung bisa membaca situs kita, karena tidak ada masalah dengan browser. OK, sekarang kita langsung masuk ke inti pembahasan. O, ya sebelum masuk ke script PHP, anda perlu menyiapkan peralatan dulu. Anda bisa menginstall PHP di komputer anda. Salah satu yang paling sederhana walaupun nggak lengkap - adalah PHP Triad. Atau pilihan lainnya, anda harus memiliki hosting yang men-support PHP, sehingga nantinya anda dapat mengetes file PHP yang anda buat. Salah satu hosting gratisan yang saya rekomendasikan adalah www.f2o.org, support PHP, tanpa banner atau pop up iklan yang menyebalkan, dan menyediakan space yang lumayan gede, 75 MB.
Sudah siap ? Baik kita mulai. next
Seri Tutorial - PHP 2 File PHP Pertama Anda oleh Abdur Rahim Sebelum membuat file PHP, saya mengasumsikan anda sudah familiar dengan HTML. Jika ternyata belum, saya sarankan anda membuka Tutorial HTML. Script PHP adalah sebuah blok, yang diawali dengan . Contoh paling sederhana adalah script berikut: Dengan script ini anda akan menampilkan tulisan Script PHP pertamaku pada layar browser anda. Kalau kita break-down, maka pada script di atas, kita melihat perintah sebagai berikut: . Ini adalah perintah yang selalu digunakan untuk menutup blok kode PHP anda. Kemudian masukkan blok script di atas ke dalam file html sehingga keseluruhan file akan berbentuk sebagai berikut:
Copy script di atas. Buka notepad anda, kemudian paste dan simpan file tersebut dengan ekstension php. Bingung memilih nama ? OK saya pilihkan, simpan file tersebut dengan nama scriptku.php. Jalankan, kalau anda menginstal PHP pada komputer anda, atau upload ke hosting yang mensupport PHP. Kemudian panggil file anda menggunakan browser favorit anda. Contoh hasil dapat anda lihat di sini. Berhasil ? Bagus itu adalah langkah pertama anda. Hmm anda anggap kurang menantang ? Yah, anda mungkin perlu cepat mengklik halaman berikutnya. previous | next
Seri Tutorial - PHP 3 Beberapa Informasi Penting oleh Abdur Rahim Sekarang kita akan menggunakan script PHP untuk menampilkan beberapa informasi. Perhatikan file berikut, mestinya anda sudah familiar. Teks di sini adalah teks HTML biasa. Anda dapat menulis apapun di sini. Namun setelah ini anda mulai masuk ke blok script PHP.
Di sini saya menampilkan perintah $PHP_SELF yang mestinya akan menampilkan informasi berupa direktori dan nama file ini. Untuk file yang sekarang anda baca, yang akan ditampilkan adalah tulisan /php/contoh_php_2.php. Mungkin sekarang perintah ini tidak berguna bagi anda, namun nanti ada saat di mana anda berterima kasih telah diperkenalkan perintah ini. :D O, ya, perintah ini hanya bekerja jika server anda Apache.
print "$PHP_SELF
"; /* Sekarang saya akan menampilkan perintah "phpinfo()". Perintah ini akan memberikan hasil berupa konfigurasi PHP yang anda gunakan. Informasi ini akan bermanfaat saat anda melakukan troubleshooting. Anda bertanya untuk
apa ? Ya anda akan sering mengalaminya ... melakukan troubleshooting terhadap masalah-masalah script anda. Siap-siap saja dari sekarang. :) */ phpinfo(); ?> Saya kira keterangan di dalam script PHP di atas sudah cukup menjelaskan fungsi perintah $PHP_SELF dan perintah phpinfo(). Dan, ini yang mungkin perlu saya jelaskan. Kita dapat menambah komentar dalam script PHP kita tanpa mempengaruhi proses yang dikerjakan. Komentar ini akan sangat bermanfaat manakala kita memiliki script yang panjang, yang setelah beberapa bulan kemudian, ingin kita edit kembali. Dengan adanya komentar kita akan dengan cepat menangkap apa yang dahulunya ingin kita lakukan dengan script tersebut. Komentar dalam PHP dapat diawali dengan tanda // yang harus mengawali setiap baris. Jadi karakter apapun yang anda tulis setelah tanda // akan diabaikan dan dianggap sekedar komentar. Syaratnya harus berada pada baris yang sama. Komentar juga dapat diberikan di antara tanda /* dan */ tanpa harus berada pada baris yang sama. Anda dapat melihat contoh penggunaannya pada blok PHP di atas. Hasil dari file di atas dapat anda lihat di sini. previous | next
Seri Tutorial - PHP 4 Variabel dan Penggunaannya oleh Abdur Rahim Variabel akan sangat berguna dalam PHP, terutama karena kita tahu PHP banyak digunakan untuk menampilkan halaman hompej yang dinamis, yang cerdas, yang mampu merespons keinginan pengunjungnya. Dalam PHP penamaan variabel harus memenuhi beberapa aturan, yaitu: 1. Diawali dengan tanda $. Sebenarnya tanda $ sendiri tidak termasuk nama dari variabel ini, tetapi hanya sekedar memberitahukan bahwa apa yang anda tulis adalah variabel. Jadi "$ini" adalah variabel, dan "ini" bukan variabel. 2. Setelah tanda $, variabel harus diawali dengan huruf. Tidak boleh memulai variabel dengan angka, atau tanda baca lainnya. Sebagai contoh "$3tidakvalid" bukanlah penamaan variabel yang dibenarkan. 3. Nama variabel hanya terdiri dari huruf, angka dan tanda garis bawah (_). Jadi nama seperti "$boleh_dong" dibenarkan, dan nama seperti "$apa_liat-liat" tidak dibenarkan. 4. Tidak dibenarkan memberikan nama variabel dengan sesuatu (perintah, dll) yang sudah ada dan memiliki fungsi tertentu. Misalnya anda tidak dibenarkan menamakan variabel anda dengan "$print".
5. Penamaan variabel pada PHP case sensitive, artinya huruf besar dibedakan dengan huruf kecil. Contohnya variabel "$ini" tidak sama dengan variabel "$iNi". Contoh penggunaan variabel dalam script PHP adalah sebagai berikut: "); $keadaan = "saya mahir PHP"; print ("Setelah membaca tutorial ini $keadaan"); ?> Anda dapat melihat pada kode di atas saya memberi nama variabel saya dengan nama "$keadaan". Kemudian variabel itu saya isi dengan kata "saya bingung tentang PHP" dan saya tampilkan hasilnya menggunakan perintah print. Di sini perlu anda perhatikan bahwa saat melakukan perintah print, variabel tidak diapit oleh tanda petik maupun koma di atas. Kemudian berikutnya isi variabel $keadaan saya ubah dengan memasukkan kata "saya mahir PHP", dan kembali saya menampilkan variabel itu dengan perintah print. Hasil script PHP di atas dapat anda lihat di sini. Anda masih belum terkesan ? Hehe .. Memang penggunaan variabel di atas terkesan mengada-ada dan tidak perlu, karena untuk hasil yang sama kita dapat menggunakan script berikut: "); print ("Setelah membaca tutorial ini saya mahir PHP"); ?> Namun script variabel tadi sekedar memberi contoh penggunaan variabel secara sederhana. Penggunaan variabel yang lebih 'bermanfaat' dapat anda lihat pada pemakaian form, misalnya pada contoh script berikut: a. Berikut ini adalah file HTML untuk form. (kalau anda lupa tentang form, dapat melihat kembali tutorial). Tidak ada yang aneh, kecuali pada saat anda menekan kata kirim, maka anda mengaktifkan file "hasil.php", yang terjadi karena anda menggunakan perintah
b. Dan berikut adalah script untuk file hasil.php Hasil
Hai
Jadi anda menyukai , eh
Jadi ngiler juga nech. ;) Dalam script ini kita menampilkan variabel yang dikirim oleh form dengan nama "$namaku" dan "$makanan". Variabel ini seperti biasa kita tampilkan menggunakan perintah print yang kali ini cukup kita tulis dalam satu baris, seperti . Anda dapat juga melihat hasil script di atas pada link ini. Bagaimana sudah mulai terkesan ? Wah, masih belum juga ? Kalau begitu lanjuuuut. previous | next
Seri Tutorial - PHP 5 Array, Penting untuk Membuat Database oleh Abdur Rahim Kalau anda sering berkecimpung dalam pemrograman, tentu anda sudah sering mendengar - bahkan menggunakan - array. Array adalah sebuah variabel yang mengandung beberapa anggota. Wah bingung juga kalau disuruh mendefinisikan. Yang jelas anda akan memahaminya dari contoh-contoh berikut.
Misalnya kita ingin membuat variabel tentang partai politik di Indonesia. Kita bisa menuliskannya sebagai berikut: $partaiNasionalis = "pdip"; $partaiIslam = "pk"; $partaiSosialis = "prd"; Pembuatan variabel di atas adalah variabel biasa, bukan array. Sedang kalau kita memasukkannya ke dalam array, maka akan berbentuk sebagai berikut: $partai = array ( "pdip", "pk", "prd" ); atau anda juga dapat menuliskannya dengan cara sebagai berikut: $partai[] = "pdip"; $partai[] = "pk"; $partai[] = "prd"; Dalam kedua array di atas maka kita akan memperoleh $partai[0] = "pdip", kemudian $partai[1]="pk" dan $partai[2]="prd". Ingat dalam PHP (sebagaimana dalam C), array dimulai dengan angka 0. Untuk lebih meyakinkan diri, anda dapat mencoba script PHP berikut: Maka anda akan memperoleh hasil berupa "pk". Dengan kemampuan ini, kita akan dengan mudah memanipulasi data dalam variabel tersebut. Misalnya kemudian dengan perintah $partai[] = "sesuatu";, maka otomatis "sesuatu" akan dimasukkan ke dalam variabel $partai[3], melanjutkan urutan sebelumnya. Array tidak hanya bisa diurutkan dengan nomor seperti di atas. Anda juga dapat memberi nama dengan bebas, seperti pada contoh berikut: $partai = array ( nama=>"pk", deskripsi=>"partai islam", asas=>"islam", peringkat=>7 ); Dengan pendefinisian seperti di atas, maka perintah print ($partai[asas]); akan memberikan hasil berupa kata "islam". Data kita dapat menjadi lebih kompleks dengan adanya array di dalam array, misalnya pada script berikut ini:
"pdip", deskripsi=>"partai nasionalis",
asas=>"pancasila", peringkat=>1 ), array ( nama=>"pk", deskripsi=>"partai islam", asas=>"islam", peringkat=>7 ), array ( nama=>"prd", deskripsi=>"sosialis", asas=>"kerakyatan", peringkat=>30 ), array ( nama=>"pan", type=>"partai nasionalis", asas=>"pancasila", peringkat=>5 ) ); print ($partai[1][nama]); print (" "); print ($partai[3][peringkat]); ?> Anda dapat melihat hasil kode di atas di sini. Tentu anda dapat memanfaatkan array ini untuk database penjualan buku online, database karyawan, dll. Hal tersebut sepenuhnya tergantung kreativitas anda. previous | next
Seri Tutorial - PHP 6 Operator If, Else, dan Elseif oleh Abdur Rahim Operator if, else dan elseif juga merupakan operator yang selalu anda temui dalam bahasa pemgrograman apapun. Kalaupun ada perbedaan, mungkin hanya sedikit, seperti misalnya dalam script CGI digunakan "elsif" bukan "elseif". Secara umum penggunaan operator ini adalah sebagai berikut: if (kondisi_pertama) { // Maka apabila kondisi_pertama terpenuhi, semua yang // berada di sini akan dijalankan. } elseif (kondisi_kedua) { // Maka apabila kondisi_kedua terpenuhi, semua yang // berada di sini akan dijalankan. } else { // Jika kondisi_pertama dan kondisi_kedua tidak terpenuhi, // maka perintah yang berada di sini yang akan dijalankan.
} Contoh penggunaannya adalah dalam form untuk meminta alamat email seseorang yang harus berbentuk "[email protected]". Jika bentuk tersebut tidak terpenuhi, maka kita akan mengirim teguran kepada pengisi form tersebut. Berarti di sini ada tiga kondisi yang harus dipenuhi: Pertama harus ada tanda "@". Kedua harus ada tanda "." Ketiga panjang alamat email minimal 8 karakter, di sini kita asumsikan email terpendek akan berbentuk seperti "[email protected]" Dengan persyaratan-persyaratan seperti di atas, mula-mula kita buat form meminta alamat email seperti biasa - tidak ada yang aneh di sini : Kemudian script PHP yang menerima data tersebut adalah sebagai berikut:
} else { print ("Terima kasih, telah memberikan alamat email dengan benar."); } ?> Bagaimana, menarik bukan ? Hehe .. saya tahu ada beberapa perintah di atas yang belum saya jelaskan. Tapi yang jelas inti dari script di atas adalah, pertama mengecek apakah ada tanda "@", jika tidak ada maka browser akan menampilkan peringatan pertama. Kemudian mengecek alamat imel yang diberikan, apakah ada tanda ".". Jika tidak ada, maka ditampilkan peringatan kedua. Kemudian mengecek apakah panjang imel kurang dari 8 karakter. Jika ternyata kurang, maka ditampilkan peringatan ketiga. Jika kondisi di atas terlewati semua, berarti alamat imel yang dimasukkan benar, dan anda mendapat ucapan terima kasih. Hasil dari script di atas dapat dilihat di sini. Anda dapat mencoba memasukkan input yang berbeda-beda. Hmm saya tahu script di atas belum sempurna untuk mencegah orang memasukkan alamat email secara asal. Sebagai contoh imel seperti "asdaf.@s" akan dianggap benar karena masih memenuhi ketiga persyaratan di atas. Saya yakin nantinya anda akan dapat memperbaiki sendiri script di atas. Oh, anda belum puas. OK, akan saya terangkan sekilas beberapa hal yang perlu anda ketahui. Pertama, perintah "strpos" memiliki bentuk "strpos ( $input, karakter)". Di sini $input adalah alamat imel "$imel" dan karakter yang dicari adalah '@' pada kasus pertama, dan `.` pada kasus kedua. Fungsi ini akan memberikan hasil berupa posisi karakter di dalam $input, misal jika $input = "[email protected]" maka pencarian karakter '@' pada perintah strpos akan memberikan hasil "7" (ingat perhitungan selalu dimulai dari angka 0). Dan jika karakter yang dicari tidak ditemukan, maka perintah strpos akan memberikan hasil "false". Kedua, perintah "strlen" mempunyai bentuk "strlen ($input)" yang akan memberikan hasil berupa panjang "$input" dalam bentuk integer. Dalam kasus di atas $input kita adalah $imel, yaitu alamat email yang dimasukkan ke dalam form. Ketiga dalam perintah print di atas, saya menggunakan tanda \"@\". Tanda \ berfungsi saat kita ingin memberitahukan kepada PHP bahwa tanda " yang kita gunakan bukan bagian dari perintah, namun sekedar karakter biasa yang ingin kita tampilkan. Tanpa menyisipkan tanda \ anda akan mengalami error. Percaya deh, kalau enggak coba aja sendiri. Terakhir, saya menggunakan tanda "==" di dalam perintah if. Yang artinya kesamaan. Jika harga strpos($imel,'@') bernilai "false" maka kondisi if tadi terpenuhi, dan perintah yang berada dalam blok if akan dijalankan. Di sini ada
beberapa operasi perbandingan/logika di dalam PHP yang perlu anda ketahui, yaitu: Operasi Perbandingan Contoh
Nama
Hasil
$a == $b
Kesamaan
Benar, jika $a sama dengan $b
$a === $b Identik
Benar, jika $a sama dengan $b dan memiliki tipe yang sama (untuk PHP 4)
$a != $b
Ketidaksamaan
Benar, jika $a tidak sama dengan $b
$a <> $b
Ketidaksamaan
Benar, jika $a tidak sama dengan $b
$a !== $b Ketidakidentikan
Benar, jika $a tidak sama dengan $b, atau berbeda tipenya (untuk PHP 4)
$a < $b
Kurang dari
Benar, jika $a kurang dari $b
$a > $b
Lebih dari
Benar, jika $a lebih dari $b
$a <= $b
Kurang dari atau sama dengan
Benar, jika $a kurang dari atau sama dengan $b
$a >= $b
Lebih dari atau sama dengan
Benar, jika $a lebih dari atau sama dengan $b
Operasi Logika Contoh
Nama Hasil
$a and $b And
Benar, jika $a DAN $b kedua-duanya benar
$a or $b
Benar, jika $a benar ATAU $b benar
Or
$a xor $b Xor
Benar, jika HANYA salah satu saja yang benar, $a benar atau $b benar
! $a
Benar, jika $a bernilai salah
Not
$a && $b And
Benar, jika $a DAN $b kedua-duanya benar
$a || $b
Benar, jika $a benar ATAU $b benar
Or
Anda telah melalui bagian yang cukup alot. Bagian berikutnya akan lebih mudah untuk anda cerna. previous | next
Seri Tutorial - PHP 7 Loop, Operator While dan For oleh Abdur Rahim Operator berikutnya yang akan banyak anda pakai adalah operator "while" dan "for". Operator while akan berbentuk sebagai berikut: while (kondisi) { // Maka apabila "kondisi" TETAP terpenuhi, semua yang
// berada di sini akan TERUS dijalankan. } Contoh klasik penggunaan while adalah untuk menampilkan angka terus-menerus hingga kondisi dalam perintah while di atas tidak terpenuhi. Sebagai contoh script berikut: "); $angka++; } ?> Pada contoh di atas perintah print akan terus dijalankan selama kondisi di dalam while terpenuhi, yaitu selama $angka belum melebihi harga "10". Sementara itu harga $angka terus bertambah dengan perintah "$angka++;" yang memiliki makna sama dengan perintah "$angka = $angka + 1;". Anda bebas memilih bentuk perintah yang anda sukai. Hasil dari script di atas dapat dilihat di sini. Operasi di atas juga dapat dilakukan dengan menggunakan perintah for. Untuk perintah for, bentuk umumnya adalah sebagai berikut: for (expr1; expr2; expr3) { // Perintah dalam blok for } Operator for akan terus menjalankan perintah yang berada di antara tanda { ... } selama "expr2" terpenuhi. Sementara itu, expr1 dijalankan hanya saat pertama operasi for berjalan, setelah itu sama sekali dilupakan. Sedang expr3 akan selalu dijalankan pada setiap akhir loop. Kelihatannya akan lebih mudah jika anda menyimak contoh berikut. Contoh ini akan memberikan hasil persis sama dengan operator while di atas. "); } ?> Hasil dari script di atas dapat dilihat di sini. Hey, ini file baru, bukan file yang tadi. Jangan menuduh sembarangan. :D previous | next
Seri Tutorial - PHP 8 Fungsi, Bagian Terakhir dari Langkah Pertama oleh Abdur Rahim Sekarang kita belajar tentang fungsi, yang di sini saya anggap sebagai senjata terakhir yang diperlukan programmer PHP level dasar. Setelah level ini terlewati, anda layak di'wisuda'. Namun tentunya untuk dapat menghasilkan hompej yang apik dengan menggunakan PHP anda perlu kreatif dan membuka-buka referensi, saya sarankan anda mengunjungi manual php.net, terutama Bab 4, Function Reference. Atau kalau anda merasa akan menghabiskan terlalu banyak waktu membuat script sendiri, anda dapat saja melihat contoh-contoh dan artikel yang banyak tersedia, seperti di: Koleksi Webmonkey PHP Builder PHP Resources OK, kembali ke fungsi. PHP sendiri menyediakan banyak fungsi yang dapat dipanggil, saat diperlukan, seperti kemarin kita menggunakan fungsi "strlen" untuk mengetahui panjang sebuah string. Di samping fungsi yang sudah tersedia tersebut, kita juga dapat mendefinisikan sendiri fungsi yang kita perlukan. Sebagai contoh pada Tutorial PHP 2, anda memiliki script berikut: Anda dapat membuat script di atas menjadi sebuah fungsi, dengan cara menambahkan kata function. Sebagai contoh, berikut ini adalah fungsi yang akan memerintahkan menampilkan tulisan "Script PHP pertamaku". Untuk menjalankan namaFungsiku() di atas, anda hanya perlu menambahkan perintah namaFungsiku();. Dengan menjalankan perintah tersebut, maka semua yang berada di antara kurang kurawal { ... } akan dijalankan. Jadi keseluruhan file anda akan berbentuk:
Fungsi di atas agak kurang funky karena tidak ada variabel yang menjadi input dan output fungsi. Anda dapat mencoba sendiri, tidak akan saya berikan contoh hasilnya. Untuk fungsi dengan input dan output, sebagai contoh fungsi harga($hargaDasar,$keuntungan) akan saya sajikan dalam script berikut: Tentu seperti biasa anda memerlukan form yang meminta input harga dasar buku dan keuntungan diinginkan. Gunakan form berikut ini - tidak ada yang aneh di sini: Contoh Form Tentu seperti biasa, hasil akhir dapat anda lihat di sini. Mmm, setelah ini saya akan berfikir tutorial apa yang berguna bagi anda selanjutnya. Yang jelas basic anda sudah cukup untuk bermain-main sendiri membuat hompej dengan PHP. previous | next
Seri Tutorial - PHP 9 Proyek 1: Smart Navigasi 1, Pendahuluan oleh Abdur Rahim Hah, akhirnya ketemu satu proyek yang cukup menarik (bisa langsung dipakai) dan menantang (scriptnya lumayan panjang), yaitu navigasi. Bayangkan anda membuat sebuah toko buku online, yang mempunyai tiga menu, Daftar Buku Total, Daftar Buku Favorit, Daftar Buku Baru. Jika ada sebuah buku baru dirilis, maka isi menu di Daftar Buku Total dan Daftar Buku Baru harus ditambah, dst. Artinya anda harus mengubah tidak hanya satu menu, tapi beberapa menu, hanya akibat perubahan satu item. Menyebalkan bukan, apalagi kalau anda bekerja dalam volume besar. Bayangkan sebuah toko buku online seperti ini. Jika hanya menggunakan file html, berarti webmaster harus 'bekerja keras' saat melakukan update. Untung dengan PHP anda dapat membuat urusan menjadi mudah. Anda hanya perlu menambah item, dan keseluruhan menu akan berubah secara otomatis. Belum nangkep ? Anda dapat melihat sebuah situs sederhana yang menggunakan PHP di sini. Anda lihat, secara garis besar fungsinya sama dengan situs toko buku online di atas. Namun kali ini webmaster bekerja smart dengan menggunakan PHP. Hey, anda ingin melihat sourcenya ? Percuma kalau anda melihat source pada browser anda, karena browser hanya menerima file jadi yang bentuknya persis file HTML biasa. Untuk melihat kode PHP yang digunakan, anda dapat mengklik di sini. Gimana ... pusing kan ? :) Sebelum kita mem-break down kode di atas, perlu saya jelaskan terlebih dahulu direktori file yang saya gunakan untuk keperluan ini. Oh, anda ingin tahu pembuat script tadi ? OK, yang membuat adalah Brad Bulger, thanks to him. Kita kembali ke direktori file. File-file yang saya gunakan untuk keperluan ini adalah sebagai berikut: / nasyrul.php /meta ads.htmlf
isi.lst tintin.gif /stories /001 meta.lst page_1.htmlf page_2.htmlf page_3.htmlf /002 sama dengan atas /003 sama dengan atas /Buku Total stories.lst /Buku Baru stories.lst /Buku Favorit stories.lst File "nasyrul.php" adalah otak yang mendalangi semua aktivitas navigasi, anda telah membukanya tadi di atas. File "ads.htmlf" adalah file yang dapat anda isi iklan yang isinya disesuaikan dengan produk yang diklik, sebutlah dynamic ad. File "ads.htmlf" yang saya gunakan hanya berisi: "Ini bisa diisi iklan yang disesuaikan dengan jenis produk yang diklik." Kemudian file isi.lst berisi menu yang tersedia, untuk keperluan ini file tersebut saya isi: Buku Total Buku Baru Buku Favorit Dan file "tintin.gif" hanyalah berisi gambar yang saya tampilkan di situs tersebut untuk mempercantik. :D Kemudian direktori /stories/001, /002, /003 berisi item barang yang ingin ditampilkan. Di dalam direktori tersebut terdapat file "meta.lst", yang saya isi: Judul=Tafsir Ibnu Katsir Pengarang=Muhammad Nasib Ar Rifai Harga=2500 Juga file "page_1.htmfl", "page_2.htmlf", "page_3.htmlf" yang dapat anda isi keterangan mengenai item barang yang anda tampilkan. Saya sendiri mengisinya dengan keterangan semacam review buku dan daftar isi. Terakhir adalah direktori /Buku Total, /Buku Baru, /Buku Favorit yang hanya berisi file "stories.lst". File ini berisi list barang yang akan dimasukkan dalam menu yang bersangkutan. Sebagai contoh untuk file "stories.lst" yang berada di dalam direktori /Buku Total, saya mengisinya dengan: 001 002 003
Sehingga barang yang tertera pada direktory /stories/001, /002 dan /003 akan masuk ke dalam menu /Buku Total. Cukup, hanya itu file yang saya gunakan, tidak ada tambahan lain. Anda jangan membayangkan bahwa di dalam tiap direktori saya letakkan file "index.html" hanya karena saat membuka situs di atas anda diarahkan untuk membuka direktoridirektori tertentu, yang ternyata isinya hanya seperti itu. Di sini ada 'trick' yang digunakan. :) previous | next
Seri Tutorial - PHP 10 Proyek 1: Smart Navigasi 2, Pekerjaan Kasar oleh Abdur Rahim Sekarang mari kita mulai membedah script yang dipakai sedikit demi sedikit. check=[$check]\n"; $root = substr($root,0,$check); # print "
\n"; Pada script di atas ada bagian-bagian yang hanya berupa komentar, yaitu yang diawali dengan tanda #. Bagian ini tidak akan mempengaruhi jalannya script. Oleh karena itu pembahasan langsung kita lakukan pada baris yang berisi "$root = getenv("SCRIPT_NAME"); ". Fungsi getenv adalah fungsi yang mengambil harga variabel lingkungan (environmental variable), dalam hal ini variabel yang diambil adalah SCRIPT_NAME yang kemudian disimpan dalam variabel $root. SCRIPT_NAME sendiri akan memberikan nilai berupa nama file dan direktorinya (anda tentu ingat saat menggunakan perintah "phpinfo()" dalam contoh tutorial PHP 3 anda mendapatkan banyak informasi, salah satunya adalah informasi SCRIPT_NAME). Jadi di sini $root akan diisi dengan "/navigasi/navigasi.php". Perintah berikutnya "$check = strrpos($root,'/');" mungkin dapat anda bayangkan maksudnya. Sedikit berbeda dengan strpos yang pernah kita gunakan dalam tutorial PHP 6, fungsi strrpos di atas akan mencari posisi "/" yang paling akhir, bukan yang pertama (ada dua "/" dalam variabel $root). Jadi $check akan berharga 9 (ingat perhitungan posisi dimulai dari 0). Kemudian berikutnya digunakan fungsi substr, pada perintah "$root = substr($root,0,$check);". Fungsi substr ini akan mengambil
sebagian isi $root, yaitu dari posisi "0" sampai posisi "$check (9)". Dengan demikian kini $root akan memiliki harga "/navigasi/". Yup, kita hanya memerlukan direktorinya, tidak dengan nama file. Setelah itu yang terakhir, kembali kita menggunakan fungsi getenv, hanya kali ini besaran yang kita inginkan adalah DOCUMENT_ROOT. Seperti juga yang ditampilkan saat kita menggunakan perintah phpinfo(), DOCUMENT_ROOT akan memberikan hasil berupa "/home/sites/rahim/www/public_html", sehingga perintah "$docroot = getenv("DOCUMENT_ROOT").$root;" akan memberikan hasil "/home/sites/rahim/www/public_html/navigasi", yang disimpan dalam variabel $docroot. Anda masih menyimak ? Kita lanjutkan. Bagian berikutnya adalah sebagai berikut: $sections = array(); $fp = fopen("$docroot/meta/isi.lst","r"); while ($fline = fgets($fp, 256)) { # print "
fline=[$fline]
\n"; $sections[count($sections)] = trim($fline); } fclose($fp); Pada script di atas, pertama kita mendefinisikan $sections sebagai array. Kemudian kita membuka file "isi.lst" dalam direktori "/home/sites/rahim/www/public_html/navigasi/meta/". Setelah itu baris demi baris pada file isi.lst dimasukkan ke dalam variabel $fline. Di sini kita menggunakan perintah fgets yang membaca hingga baris baru (berarti membaca per baris) dengan ukuran maksimal 256 bytes. Kemudian di dalam blok while, variabel $fline di-trim, yaitu dibuang karakter yang tidak perlu di awal dan akhir (misal karakter enter), dan dimasukkan nilainya ke array $sections. Di sini kita melihat penggunaan perintah "count" yang berfungsi untuk menghitung jumlah elemen pada array $sections. Saat belum terisi apa-apa, perintah count($sections) berharga "0", sehingga trim($fline) dimasukkan ke $sections(0). Kini count($sections) berharga 1 (ada satu elemen), sehingga nilai trim($fline) berikutnya dimasukkan ke $sections(1), dst. Terakhir setelah kondisi $fline = fgets($fp, 256) bernilai salah, artinya tidak ada baris lagi file telah terbaca semua, maka file pun ditutup. Belum pusing kan ? Blok berikutnya adalah perintah: $path = getenv("PATH_INFO"); # print "
path=[$path]
\n"; Perintah ini juga mengambil variabel lingkungan dan menyimpannya pada $path. PATH_INFO adalah apapun yang tertulis setelah nama file. Jadi apabila user mengklik alamat http://rahim.f20.org/navigasi/nasyrul/Buku Baru/001", maka PATH_INFO akan memberikan nilai berupa "/Buku Baru/001". Karena nasyrul di sini adalah nama file (nasyrul.php) bukan nama direktori. Trik inilah yang menurutku menjadi otak script ini dalam menjalankan proses navigasi. :) $dirs = split("/", $path); list($null,$section,$storyid,$pg) = $dirs;
\n"; include("$docroot/meta/ads.htmlf"); Terakhir, (hehehe ... lega ya. :)) kita menggunakan perintah split untuk memisahkan isi variabel $path menjadi beberapa bagian, dengan pemisah "/". Jika $path bernilai "/Buku Baru/001", maka perintah "$dirs = split("/", $path);" akan memberikan hasil yang sama dengan perintah array, "$dirs = array ("", "Buku Baru", "001");". Setelah itu harga elemen pada variabel $dir dimasukkan ke variabel $null, $section, $storyid, dan $pg. Jika nilai $dirs seperti di atas, maka $null akan bernilai "", $section akan bernilai "Buku Baru", $storyid akan bernilai "001", dan $pg akan bernilai "". Berikutnya mengecek kondisi variabel $section, $storyid, $pg. Kalau enggak ada atau belum terisi (misalnya saat baru njalanin file nasyrul.php, belum mengklik apapun), maka diperintahkan untuk mengisi $section dengan harga $sections[0], untuk kasusku berisi "Buku Baru", mengisi $storyid dengan "0" dan $pg dengan "1". Yang terakhir sekali (untuk sessi ini sayang), penggunaan perintah include akan memasukkan tulisan dalam file ads.htmlf untuk ditampilkan ke bagian paling atas, ceritanya untuk iklan. Dengan menyeleksi harga $section, $storyid, $pg, kita bisa menggunakan perintah if untuk menampilkan iklan yang sesuai dengan item barang yang diklik. Mungkin setelah anda membaca tuntas tutorial navigasi ini, ada baiknya hal ini menjadi PR, tugas bagi anda. Saya sendiri cukup puas dengan hanya menampilkan tulisan "Ini bisa diisi iklan yang disesuaikan dengan jenis produk yang diklik." dalam file ads.htmlf. Anda bisa memulainya dengan membuat file ads_1.htmlf, ads_2.htmlf, dst. previous | next
Seri Tutorial - PHP 11 Proyek 1: Smart Navigasi 3, Tampilan si Selebriti oleh Abdur Rahim Kita sudah menyelesaikan 'pekerjaan kasar' pada tutorial sebelumnya. Setelah semua persiapan beres, kini saatnya kita bermain tampilan dan link. Perhatikan script di bawah ini: \n"; print "
\n"; print "
\n"; print "
\n";
print "
\n"; print "
Nasyrul"; print " Fikroh
\n"; print "
\n"; Script di atas hanya perintah biasa untuk membuat tabel. Menampilkan gambar tintin.gif dan tulisan Nasyrul Fikroh di bagian atas. Setelah berjalan sejauh ini, tentunya anda sudah sangat familiar dengan perintah tabel di atas. Namun kalau belum, anda dapat membuka tutorial berikut. Setelah ini, kini bermain dengan link. Perhatikan script berikut: $key = ""; $value = ""; while (list($key,$value) = each($sections)) { $value = trim($value); print "
\n"; print "\n"; Pada script di atas kita menggunakan perintah "each" untuk memberi harga pada variabel $key dan $value. Dengan variabel $sections berharga ("Buku Total", "Buku Baru", "Buku Favorit"), maka variabel $key akan terisi "0" dan variabel $value terisi "Buku Total". Kemudian perintah dalam blok while dijalankan. Dalam loop berikutnya, variabel $key akan terisi "1" dan variabel $value terisi "Buku Baru", dan kembali blok while dijalankan. Demikian seterusnya. Jadi $key akan terisi indeksnya dan $value akan terisi harganya (pada tutorial mengenai array anda telah belajar bahwa indeks tidak harus berupa angka, namun juga dapat didefinisikan dengan kata tertentu). Setelah variabel $key dan $value terisi, maka dilakukan pengecekan apakah $value memiliki isi yang sama dengan $section. Jika ya, berarti menu tersebut yang aktif, dan tulisan menu ditampilkan dengan huruf tebal (bold) tanpa link. Namun jika tidak, berarti menu tersebut belum aktif, dan ditampilkan berupa link ("
Script berikutnya mulai membuat menu navigasi di bawah. # section nav if (!$storyid) { print "
\n"; } else { print "
\n"; } print "
" .strtoupper("daftar $section") ."
\n" ; Script di atas hanya menyatakan bahwa jika tidak ada item barang yang diklik ($storyid masih bernilai ""), maka menu ditampilkan seperti biasa di kiri. Namun jika ada item barang yang diklik, maka menu ditampilkan dalam bentuk tabel berwarna hijau di kanan. Tentu bagian kiri akan terisi informasi tentang barang yang diklik tersebut. O, ya di atas ada perintah ".strtoupper". Tanda titik hanya menyatakan bahwa perintah ini merupakan kelanjutan perintah di atasnya, jadi dianggap sebagai satu baris (masuk blok print). Dan strtoupper hanya berfungsi untuk mengubah karakter menjadi huruf besar. OK, lanjutt. $stories = array(); $fp = fopen("$docroot/$section/stories.lst","r"); while ($fline = fgets($fp, 256)) { $story = trim($fline); print "
\n"; } ?> Script ini membaca file yang sedang aktif, asumsikan kita sedang membaca page_2.htmlf. Kemudian dengan perintah yang anda sudah familiar (substr, strpos) kita memanipulasi nama file, dan membuat variabel baru berharga page_1.htmlf dan page_3.htmlf. Setelah itu kita membuat link "previous" dan link "next" untuk halaman page_1.htmlf dan page_3.htmlf tersebut. Dengan perintah ini, maka setiap kita menambahkan halaman page_$pg.htmlf dalam direktori /$storyid, otomatis akan muncul link previous dan next. Dan karena kita menguji ada tidaknya file dengan perintah "file_exists", maka pada halaman pertama otomatis hanya ada perintah "next", sedang pada halaman terakhir hanya ada perintah "previous". Metode tersebut saya pakai pada tutorial ini, anda bisa lihat link previous dan next di bawah. Berarti kini selesai bagian kedua dari Tutorial PHP, yaitu bagian Proyek 1. Jika ada waktu dan saya rasa menarik, akan saya tampilkan tutorial berikutnya, yang berarti: "Ada proyek baru nech." ;) previous | next
Seri Tutorial - PHP 13 Proyek 2: Interaksi dengan Pengunjung oleh Abdur Rahim Setelah anda selesai merumuskan (wah serius banget) isi hompej anda, biasanya yang kemudian terfikir adalah anda ingin ada pengunjung yang datang dan memberikan respons. Ini alamiah, termasuk saya yang bahkan saat hompej belum selesai pun sudah menanti respons pengunjung dengan hati berdebar-debar. :D Nah untuk memenuhi kebutuhan ini, proyek berikutnya yang akan saya tulis di sini adalah pembuatan hal-hal yang terkait dengan masalah ini, seperti form, guestbook, forum, dll. Saya akan mencoba memaparkannya step by step. Saya mulai dengan perintah mail(). Dengan perintah mail() ini anda dapat mengirimkan imel. Imel yang dikirim tentunya bisa berisi apa saja. Mungkin komentar yang dikirim pengunjung, atau sekedar info IP address pengunjung. Perhatikan contoh script berikut, yang akan mengirimkan data pengunjung.
.= .= .= .=
mail($penerima, $judul, $isi, $headers); ?> Anda lihat, perintah mail di atas mempunyai 4 parameter yang harus diisi, yaitu $penerima, $judul, $isi, dan terakhir $header. $penerima adalah alamat imel penerima, $judul adalah judul dari imel yang dikirim, $isi adalah isi imel tersebut, dan $header adalah header dari imel. Di atas, variabel $penerima dan $judul diisi dengan kata "[email protected]" dan "Data Pengunjung". Kemudian variabel $isi kita masukkan data halaman yang sedang dibuka ($HTTP_SERVER_VARS["REQUEST_URI"]), data IP pengunjung ($HTTP_SERVER_VARS["REMOTE_ADDR"]), dan data referer ($HTTP_SERVER_VARS["HTTP_REFERER"]), yaitu halaman yang memanggil halaman ini. Kita juga beberapa kali menuliskan "\n" yang akan memberikan hasil berupa "enter", untuk memberi baris baru. Sedang variabel $header dapat kita isi data pengirim (From), X-Sender, X-Mailer, XPriority. Juga dalam variabel $header ini kita dapat mengatur jika ingin memperoleh imel dengan format HTML, serta menambah cc dan bcc. Tentang X-Priority, nilai "1" akan memberikan prioritas "urgent" dan nilai "3" akan memberikan prioritas "normal". Udah, dengan menyisipkan script di atas ke halaman situs anda, anda akan menerima imel yang memberitahukan tentang IP, referer dan halaman yang sedang dibaca oleh pengunjung. Sekarang kita melangkah ke step berikutnya, yaitu mengirim imel yang berisi input dari pengunjung. Di sini kita perlu membuat file html yang berisi form untuk meminta input dari pengunjung. Sebagai contoh kita membuat form sederhana seperti ini: Maka input yang ditulis oleh pengunjung pada form di atas dapat dikirim ke kita menggunakan file "imel.php" yang berisi script berikut:
$headers $headers $headers $headers
mail($penerima, $judul, $komentar, $headers); ?> Anda dapat melihat pada script di atas, pada $headers kita mengisi "From" menggunakan variabel $imel yang diperoleh dari input yang diberikan pengunjung. Juga isi email yang dikirim adalah $komentar yang lagi-lagi berasal dari input yang diberikan pengunjung. Jadi di sini kita telah membuat sebuah script sederhana yang mengirim input yang diberikan pengunjung ke alamat imel kita. Berikutnya kita perlu mengantisipasi jika pengunjung tidak mengisi alamat imel pada form, atau tidak mengisi bagian komentar. Jika kita biarkan, maka akan banyak imel junk (sampah) yang masuk ke mailbox kita. Oleh karena itu kita perlu mensortir input yang diberikan pengunjung dan menolaknya jika ternyata pengunjung tidak mengisi dengan lengkap. Banyak metode yang bisa digunakan, salah satu yang sederhana adalah seperti script di bawah ini.
.= .= .= .=
mail($penerima, $judul, $komentar, $headers); header( "Location: http://www.yourdomain.com/makasih.html" ); } ?> Fungsi !isset($imel) || !isset($komentar) berfungsi untuk mengecek apakah variabel $imel dan $komentar ada atau tidak. Sebenarnya penggunaan form seperti di atas dengan action="imel.php" akan otomatis menyebabkan variabel $imel dan $komentar terdefinisi, walaupun pengunjung tidak mengisinya. Oleh karena itu perintah di atas hanya berfungsi mencegah pengunjung langsung memanggil file
imel.php tanpa menggunakan form. Tanpa perintah di atas, jika pengunjung langsung memanggil file imel.php, maka sebuah imel kosong akan terkirim ke mail box kita. Sedang dengan perintah di atas, maka pengunjung akan di-redirect ke halaman "gagal.html". Berikutnya fungsi empty($imel) || empty($komentar) berguna untuk mengecek apakah pengunjung mengisi kolom imel dan komentar atau tidak. Jika pengunjung tidak mengisinya, maka akan di-redirect ke halaman "error.html". Oh, ya perintah yang digunakan untuk me-redirect pengunjung adalah dengan menggunakan header("Location: ...") . Kemudian terakhir, apabila tidak ada masalah maka imelpun dikirim ke alamat kita seperti biasa dengan menggunakan perintah mail(). Dan pengunjung pun kita redirect ke halaman "makasih.html". Mmm ... untuk form dengan banyak pertanyaan, script di atas perlu kita edit sedikit, yaitu pada bagian isi imel yang pada script di atas hanya berupa variabel $komentar. Misalnya pada form kita menanyakan tiga hal yang akan memberi tiga input berupa $nama, $alamat dan $komentar. Maka script di atas perlu diedit menjadi seperti:
.= .= .= .=
Pada script di atas, ketiga variabel yang ditanya kita masukkan ke variabel $isi dan kemudian dikirim menggunakan perintah mail(). Tanda "\t" di atas hanya berfungsi untuk memberi tab. Demikian metode sederhana yang dapat kita gunakan untuk mengirim input yang diberikan pengunjung ke alamat imel kita. Setelah ini kita akan mencoba membuat guestbook sederhana. Perbedaannya tipis. Kalau yang kita bahas sekarang, input yang diberikan pengunjung dikirim ke alamat imel kita; pada guestbook, input yang diberikan pengunjung akan dikirim ke halaman tertentu. previous | next
Seri Tutorial - PHP 14 Proyek 2: Bikin Guestbook ? Sapa Takut :p oleh Abdur Rahim Sekarang kita akan mencoba membuat guestbook sederhana. Karena tutorial database belum dibahas di sini, maka kita hanya akan menyimpan data yang ditulis pengunjung ke dalam sebuah file, biar seragam mari kita beri "data.txt" (bebas sih kalau mau ngasih nama beda). Jangan lupa, bikin dulu file kosong dengan nama data.txt, karena script saya mengasumsikan file itu sudah ada. Nah untuk script guestbooknya sendiri dapat digunakan cara berikut. Mmm saya fikir karena agak panjang lebih baik dilihat di sini. Dan kalau ingin tahu hasilnya bisa dilihat di sini. Nah, sekarang kita bahas script di atas satu persatu. Saya mulai dari fungsi tampil(). Scriptnya akan saya ulang lagi, tapi dipenggal-penggal biar mbacanya lebih enak. function tampil() { print "
Lagi-lagi script di atas hanya sekedar mengatur tampilan penulisan. Kita menggunakan banyak perintah tabel di sini. Pada script tersebut kita menggunakan perintah if(empty($imel)) untuk mengecek apakah variabel $imel diisi atau tidak. Jika diisi maka variabel $nama kita jadikan sebagai link yang bisa diklik untuk mengirim imel, sedang jika tidak diisi maka variabel $nama kita tampilkan sebagai tulisan biasa. Kita juga melakukan hal yang sama - maksudnya mengecek diisi apa enggak - pada variabel $hompej. Sekarang kita akan membahas fungsi berikutnya, yaitu fungsi isi seperti di bawah ini. function isi() { print ""; } Nah, fungsi ini juga sangat sederhana. Di sini kita hanya membuat form dengan menggunakan perintah print. "name" pada tiap input akan menjadi nama variabel yang diproses oleh script php yang kita buat. Pada form ini kita menggunakan action=$PHP_SELF?action=add yang akan memanggil file ini dengan variabel "action" diberi harga "add". Script berikutnya adalah fungsi tulis. Di sini kita akan menuliskan input dari pengunjung ke file data.txt. Perhatikan script berikut: function tulis($nama, $imel, $hompej, $komentar) { $barislagi = array(); $fr = fopen("data.txt","r"); while ($fline = fgets($fr, 4096)) { $barislagi[count($barislagi)] = $fline; } fclose($fr); $komentar $komentar $komentar $komentar $komentar
$tanggal = date("D, j M Y, H:i \G\M\T O"); $hasil = "$nama|$imel|$hompej|$komentar|$tanggal\n"; $ft = fopen("data.txt","w"); $fw = fwrite($ft, $hasil); for ($urutan = 0; $urutan <= count($barislagi); $urutan++) { $fw = fwrite($ft, $barislagi[$urutan]); } fclose($ft); tampil(); } Mungkin script di atas agak kurang efisien, tapi yang kefikir sekarang kayak gitu, ya dipake ajalah. Pertama file dibuka pake fopen dengan atribut "r", dan dibaca. Hasilnya dimasukkan ke array $barislagi(). Nah terus input yang barusan dimasukin pengunjung perlu kita edit dulu biar nggak ngerusak jalannya program. Saya menggunakan fungsi str_replace untuk mengganti semua karakter "enter" dan karakter "|" yang dimasukin pengunjung menjadi sesuatu yang bisa diolah, yaitu menjadi karakter " " dan karakter "|". Juga tag "<" saya ubah menjadi "<" biar nggak ada yang ngisengin :D - walaupun akibatnya fungsi html nggak jalan. Tapi ingat saya mengubah tag "<" dulu, baru kemudian mengubah karakter "enter" menjadi " ", sehingga karakter enter yang ditekan pengunjung akan tetap berfungsi. Sedang untuk mengantisipasi pengunjung yang memasukkan karakter "'" dan karakter "'" (tanda kutip), saya menggunakan fungsi ereg_replace, agar hasil tampilannya sesuai dengan yang diharapkan. Kemudian pada script di atas, saya juga menggunakan perintah date(" .... ") untuk menampilkan tanggal. Di dalam kurung banyak atribut yang dapat kita isi. Saya menggunakan atribut D untuk menampilkan hari (3 huruf), j untuk menampilkan tanggal, M untuk menampilkan bulan (3 huruf), Y untuk menampilkan tahun, H:i untuk menampilkan jam dan menitnya, dan \G\M\T O untuk menampilkan beda waktu dengan GMT. Akhirnya data yang dimasukkan pengunjung kita ubah formatnya dengan menggunakan perintah $hasil = "$nama|$imel|$hompej|$komentar|$tanggal\n"; Di sini kita menyisipkan karakter "|" untuk keperluan pengolahan selanjutnya. Setelah itu kembali file data.txt saya buka dengan atribut "w". Atribut ini berguna untuk membaca dan menulisi file. Namun dengan atribut ini file yang ada akan dihapus isinya (jika kita tidak menginginkan isi file terhapus, kita dapat menggunakan atribut "a" untuk menulis - hanya pointer akan diletakkan di belakang). Kemudian kita tuliskan data yang dimasukkan pengunjung, dan kita tambahkan dengan data lama yang telah kita simpan dalam array $barislagi(). Yup, saya menginginkan data baru terletak paling atas, bukan paling bawah.
Oh, anda berfikir untuk menggunakan atribut "r+" ? Kelihatannya memang akan menyelesaikan masalah dengan lebih efisien, karena atribut "r+" dapat digunakan untuk membaca dan menulisi, dan meletakkan pointer di awal file. Tapi hati-hati, dengan atribut ini anda akan menumpuk data lama dengan isian baru (bukan menyisipkan). Oleh karena itu perlu anda fikirkan lebih lanjut 'trick' yang akan dipakai. Cerita selengkapnya tentang atribut yang bisa dipakai pada perintah fopen() tuh seperti ini. • • • • • •
r : untuk membaca file, pointer diletakkan di awal file. r+ : untuk membaca dan menulisi file, pointer diletakkan di awal file. w : untuk menulisi file, pointer diletakkan di awal file. Tapi isi file yang lama terhapus semua. Kalau file nggak ada, otomatis membuat file baru. w+: untuk membaca dan menulisi file. Sama seperti di atas, isi file lama akan terhapus, dan jika file tidak ada, otomatis membuat baru. a : untuk menulisi file, pointer diletakkan di akhir file. Jika file tidak ada, otomatis membuat baru. a+ : untuk membaca dan menulisi file, pointer diletakkan di akhir file. Jika file tidak ada, file baru akan dibuat.
Terakhir adalah bagian utama dari script ini, yaitu seperti di bawah ini. if (empty($action)) { tampil(); } if ($action == "sign") { isi(); } if ($action == "add") { tulis($nama, $imel, $hompej, $komentar); } Bagian ini bisa dibilang mau enaknya aja, tinggal tau beres. Semua kerjaan berat sudah diselesaikan oleh fungsi yang sebelumnya kita bahas. Nah di bagian utama ini hanya diberikan perintah, bahwa jika variabel $action belum ada isinya, maka akan dipanggil fungsi tampil(), jika variabel $action berisi "sign" maka akan dipanggil fungsi isi(), dan kalau variabel $action berisi "add" maka akan dipanggil fungsi tulis(). Untuk fungsi tulis kita juga mengirimkan variabel yang nantinya akan dioleh ($nama, $imel, $hompej, $komentar). Selesai juga script guestbook kita. Masih sederhana, anda bisa menambahkan fungsi-fungsi lainnya jika ingin. Misalnya menolak data jika "nama" atau "komentar" tidak diisi, atau misalnya menampilkan entry 10 buah per halaman, dan sebagainya. mmm .. dengan prinsip yang sama anda juga dapat membuat "shoutbox" seperti yang ada di sebelah kiri nih. Perbedaan utama hanyalah masalah tampilannya. previous | next
Seri Tutorial - PHP 15 Proyek 3: Main-main Database Yuk ... oleh Abdur Rahim Sekarang kita akan sedikit belajar tentang database. Di sini saya akan memakai mySQL. Untuk mempermudah saya dalam membuat tutorial ini :D, saya asumsikan anda telah mempunyai sebuah database (persis yang akan anda peroleh jika mempunyai account di www.f2o.org). Jadi saya tidak akan memberi tutorial tentang bagaimana menginstall mySQL dan membuat database, tapi tutorial ini akan langsung dimulai pada langkah pembuatan tabel. Baik kita mulai. Untuk membuat tabel pada database, anda dapat menggunakan perintah ini. Ini adalah perintah dalam mySQL. Jalankan perintah berikut ini. CREATE TABLE pekerja ( id tinyint(4) DEFAULT '0' NOT NULL AUTO_INCREMENT, nama varchar(20), alamat varchar(255), kantor varchar(50), pekerjaan varchar(50), PRIMARY KEY (id), UNIQUE id (id)); INSERT INTO pekerja VALUES (1,'Arif','Jl. Minyak No. 12, Pekanbaru','Caltex','Field Engineer'); INSERT INTO pekerja VALUES (2,'Rohim','Jl. Riau No 3, Bandung','Micron','Director'); INSERT INTO pekerja VALUES (3,'Luthfi','Jl. Mesiu No. 30, Jakarta','Siemens','Supervisor'); Ada empat baris perintah di sana. Baris pertama untuk membuat tabel dengan nama "pekerja", menggunakan perintah CREATE TABLE. Tabel ini terdiri dari 5 kolom, yaitu "id", "nama", "alamat", "kantor", "pekerjaan". Pada perintah di atas kita mengeset kolom "id" sebagai PRIMARY KEY dan sebagai UNIQUE. PRIMARY KEY tuh adalah data yang isinya berbeda untuk tiap baris. Make sense kan kalau memakai "id" sebagai PRIMARY KEY ? Kemudian tiga baris berikutnya digunakan untuk mengisi data awal (ada 3 orang yang kita masukkan), yaitu menggunakan perintah INSERT INTO. Isi kolom yang kita masukkan ada setelah kata VALUES. Nah, sekarang kita telah mempunyai data dan tabel yang akan dimanipulasi. Sekarang kita akan masuk ke script PHP untuk memanipulasi data ini. Perhatikan script berikut: \n"; echo "
Nama
Alamat
Pekerjaan
\n"; while ($baris = mysql_fetch_row($hasil)) { printf("
?> Mestinya perintah-perintah di atas baru bagi anda karena saya belum pernah menyebutkannya pada tutorial-tutorial sebelum ini (kalau anda pernah belajar sendiri sih lain lagi masalahnya). Kita mulai dari baris pertama, yaitu perintah mysql_connect(). Dengan perintah ini kita menghubungi server MySQL. Perintah mysql_connect() mempunyai tiga parameter penting, yaitu nama server yang saya isi "localhost", nama user yang saya isi "user", dan password yang digunakan (di atas saya isi "password"). Anda perlu menggantinya sesuai dengan setting di tempat anda. Kemudian berikutnya saya menggunakan perintah mysql_select_db() yang berguna untuk memilih database yang digunakan. Untuk server f2o, setiap user hanya mempunyai satu buah database yang namanya sama dengan nama usernya. Pada perintah ini ada dua parameter, yaitu yang pertama adalah nama database, yang saya isi dengan "mydb". Dan yang kedua adalah link yang digunakan, yaitu yang telah didefinisikan dengan perintah mysql_connect(). Pada baris berikutnya kita memakai perintah mysql_query(). Di sini kita mengajukan query ... mmm artinya pertanyaan deh. Pada script di atas parameter yang kita gunakan adalah "SELECT * FROM pekerja",$db. Dengan menggunakan "SELECT * FROM pekerja" maka kita mengambil semua kolom dari tabel "pekerja". Query ini dikirim melalui link "$db", dan hasilnya kita simpan dalam variabel $hasil. Selanjutnya adalah perintah "echo" untuk mengatur tampilan. Perintah echo ini mirip dengan perintah print yang sering kita gunakan. Di sini kita akan menampilkan data dalam bentuk tabel. Nah setelah itu baru lumayan seru, yaitu perintah while ($myrow = mysql_fetch_row($hasil)) Perintah di atas berarti ambil setiap baris pada variabel $hasil dan simpan ke variabel $baris. Jika tidak ada baris lagi (semua sudah terbaca), maka perintah yang berada di antara kurung kurawal { .... } setelah while tidak dieksekusi lagi. Di dalam kurung kurawal sendiri digunakan perintah printf (menampilkan hasil dengan terformat) untuk membuat tabel dan menampilkan isinya. Mirip dengan perintah di program C. Di sini kita menggunakan simbol "%s" tiga kali - yang digunakan untuk string (karakter), yang isinya berturut-turut adalah $baris[1], $baris[2], $baris[3] dan $baris[4]. $baris[] adalah isi kolom pada tabel yang kita miliki. $baris[1] adalah kolom kedua, yaitu "nama" (ingat perhitungan dimulai dari 0, sehingga "id" adalah $baris[0]), $baris[2] adalah kolom ketiga yaitu "alamat", $baris[3] adalah kolom keempat yaitu "kantor" dan $baris[4] adalah kolom terakhir, yaitu "pekerjaan". Terakhir kita menutup script dengan perintah "echo" yang isinya tag untuk menutup tabel. Hasil script di atas dengan data yang kita masukkan seperti di atas, dapat dilihat di sini. Jika karena satu dan lain hal anda ternyata gagal membuat tabel :) yang berarti tidak ada data yang ditampilkan, maka script di atas akan tetap berjalan dengan hasilnya kosong. (Catatan: Barusan aku nggak sengaja ngeliat tutorial ini, ternyata ada yang aku lupa. Pada tutorial ke-16 kita akan belajar cara memodifikasi dan menghapus data. Nah data yang jadi 'korban' adalah data yang ditampilin di sini. Jadi bisa jadi saat anda mengklik, datanya berbeda dengan yang seharusnya muncul dari perintah INSERT INTO di atas, atau malah kosong - saya mengalami ini - karena ada yang
menghapus. Mungkin nantinya aku bikin tabel baru khusus untuk halaman ini lah, biar nggak bisa dimodifikasi). Kita dapat memodifikasi script PHP yang digunakan sehingga jika tidak ada data akan ditampilkan pesan tertentu. Tentu pesan ini juga bisa berupa perintah redirect ke halaman tertentu (dibahas dalam Tutorial PHP-13). Berikut script yang digunakan. \n"; echo "
Nama
Alamat
Pekerjaan
\n"; do { printf("
%s
%s
%s (%s)
\n", $baris["nama"], $baris["alamat"], $baris["kantor"], $baris["pekerjaan"]); } while ($baris = mysql_fetch_row($hasil)); echo "\n"; } else { echo "Maaf, data yang anda minta tidak ada."; } ?> Tidak banyak hal baru dalam script di atas. Hal baru yang pertama adalah penggunaan if dan else, di mana jika terdapat data maka fungsi yang berada di dalam blok if akan dijalankan - yaitu menampilkan data seperti biasa, sedang jika tidak ada data maka fungsi yang berada di dalam blok else yang akan dijalankan, yaitu memberi peringatan. Hal baru berikutnya adalah penggunaan do { ... } while. Dengan perintah ini maka blok do akan dijalankan dulu baru pengecekan while dilakukan. Ini sengaja lho. Soalnya sebelum perintah while kita telah membaca baris data dengan menggunakan perintah if. Sehingga kalau kita bersikeras menggunakan perintah while { ... } seperti sebelumnya, saat while melakukan pengecekan, maka otomatis kita beralih ke baris berikutnya. Dengan demikian baris pertama akan terlompati. Hal baru lainnya adalah penggunaan $baris["nama"], bukan $baris[1]. Jadi di sini kita menggunakan nama kolom, bukan nomornya. Tentu dengan cara ini script PHP kita akan lebih mudah dicerna. Bener kan ? previous | next
Seri Tutorial - PHP 16 Proyek 3: Masih Tentang Database Nech ... oleh Abdur Rahim Pada bab ini kita masih akan membicarakan tentang database. Namun kini kita akan menggunakan script yang lebih canggih, baik dari segi tampilan maupun dari segi pemrosesan data. Berhubung scriptnya agak panjang, dapat anda lihat di sini. Script tersebut akan memberikan hasil seperti ini . Sekarang seperti biasa kita bahas isi script di atas sedikit demi sedikit. Kita mulai dari bagian pertama "; echo "Lihat data"; } Dua baris pertama yang berisi perintah mysql_connect dan mysql_select_db mestinya sudah anda fahami karena sudah saya bahas pada tutorial sebelum ini. Sekarang kita masuk ke baris berikutnya, yaitu perintah if ($submit). Perintah if ini membuat blok if yang ada di atas hanya dijalankan apabila variabel $submit ada. Yaitu apabila tombol submit pada form - wah dibahasnya nanti di bawah - sudah diklik. Nah di dalam blok if ($submit) sendiri ada dua kondisi, yaitu jika variabel $id ada - if ($id), dan jika variabel $id tidak ada (else). Jika variabel $id ada, maka yang dijalankan adalah perintah (perintah ini sebenarnya satu baris memanjang) $sql = "UPDATE pekerja SET nama='$nama',alamat='$alamat',kantor='$kantor',pekerjaan='$pekerjaan' WHERE id=$id"; Di sini kita mengenal perintah mySQL yang kedua, yaitu UPDATE - setelah kemarin
kita mengenal SELECT untuk mengambil data. Perintah UPDATE berguna untuk mengedit isi tabel yang sudah ada. SET untuk mengatur kolom mana yang diedit dan harga kolom yang baru. Dan WHERE berguna untuk menentukan baris yang akan diedit. Tanpa ada kata WHERE, maka semua baris akan diedit. Jadi perintah di atas artinya edit tabel yang namanya "pekerja", kemudian edit kolom "nama" dengan mengubah isinya menjadi $nama (variabel ini diisi pengunjung menggunakan form yang akan dijelaskan di bawah), juga edit kolom-kolom lainnya. Dan baris yang diedit adalah baris di mana kolom "id" berharga $id. Harga $id ini juga nanti diperoleh dari pengunjung. Berikutnya jika variabel $id tidak ada, maka blok else yang akan dijalankan, yaitu $sql = "INSERT INTO pekerja (nama,alamat,kantor,pekerjaan) VALUES ('$nama','$alamat','$kantor','$pekerjaan')"; Perintah ini pada tutorial sebelumnya sudah kita bahas, hanya bedanya sekarang nama kolomnya kita tuliskan sebelum penulisan kata VALUES. Setelah itu kita gunakan mysql_query untuk mengirim apa yang kita lakukan ke database, yaitu perintah UPDATE atau INSERT di atas. Tergantung blok mana yang kita jalankan. Nah di bawah perintah mysql_query, kita memunculkan tulisan "Data telah dimodifikasi" menggunakan perintah echo. Juga kita buat link ke $PHP_SELF, yaitu halaman ini, untuk menampilkan kembali data yang ada. Lumayan bikin males ya. Saya juga rada enek nih. Tapi 'terpaksa' kita lanjutkan ke script berikutnya. elseif ($delete) { // Menghapus data $sql = "DELETE FROM pekerja WHERE id=$id"; $hasil = mysql_query($sql); echo "$sql Data telah dihapus
"; echo "Lihat data"; } Di luar pilihan if ($submit), kita mempunyai pilihan elseif ($delete), yaitu apabila variabel $delete ada, maka perintah dalam blok ini yang kita jalankan. Perintah yang dijalankan adalah $sql = "DELETE FROM pekerja WHERE id=$id"; Artinya hapus dari tabel bernama "pekerja", data pada baris di mana kolom "id" bernilai "$id". Tentu harga variabel $id ini berasal dari input pengunjung. Kemudian seperti biasa digunakan perintah mysql_query dan membuat tampilan dengan perintah echo. Kita lanjut ke script berikutnya. else { // Jika tidak menghapus maupun mengedit/menambah data if (!$id) { // Jika tidak ada data yang diedit, tampilkan list nama $hasil = mysql_query("SELECT * FROM pekerja",$db); while ($baris = mysql_fetch_array($hasil)) { printf("%s (%s) \n", $PHP_SELF, $baris["id"], $baris["nama"], $baris["pekerjaan"]);
Script ini dijalankan jika variabel $add ada, tidak peduli apakah variabel $id ada atau tidak. Isi script ini hanya menampilkan form untuk menambah data/mengedit data. Jika variabel $id ada, maka value pada setiap tag akan memiliki harga awal berupa data yang akan diedit. Dan sebaliknya jika variabel $id tidak ada, maka form-nya kosong, menunggu kita isi data baru. Jika kita mengeklik tombol submit, maka blok if ($submit) yang kita bahas pertama kali, akan dijalankan. Dengan selesainya tutorial ini, anda sudah memahami prinsip dasar memanipulasi database, yaitu menampilkan data (SELECT), menambah data (INSERT), mengedit data (UPDATE) dan menghapus data (DELETE). Itu saja ... eh ntar dulu, masih ada satu bagian lagi tentang database yang akan saya jelaskan pada tutorial berikutnya. Jangan ke mana-mana. previous | next