This document was uploaded by user and they confirmed that they have the permission to share
it. If you are author or own the copyright of this book, please report to us by using this DMCA
report form. Report DMCA
Pokok Bahasan Pengantar Web Programming Pengantar Java Script Pengantar PHP Teknik Pemrograman Struktur Kontrol PHP Function dan Procedure Pemrosesan Form Validasi Form Pemrosesan Form Akses Data Pengantar MySQL SQL Query PHP-MySQL Array Menangani Data dalam Array Manipulasi String Operasi String Cookies dan Session Cookies Session Penanganan File File Teks Upload File Grafik dan Dokumen Bekerja dengan GD Membuat Dokumen PDF Asynchrounous JavaScript Pengantar AJAX AJAX – PHP
2
Introduction
World Wide Web (WWW) atau dengan singkat sering disebut web adalah satu bentuk media informasi dan komunikasi dan merupakan aplikasi terpopuler atau paling banyak dimanfaatkan dalam jaringan internet. Melalui sarana web, berbagai bentuk informasi dapat disampaikan secara interaktif kepada pengguna internet di seluruh dunia. Secara fisik, web sesungguhnya merupakan rangkaian dokumen berisi teks, gambar, atau multimedia, yang saling berhubungan ( link) satu dengan yang lain, membentuk rangkaian informasi lengkap. Karena merupakan aplikasi dalam jaringan internet yang meliputi seluruh dunia, dimana penggunanya sangat mungkin memiliki dan menggunakan perangkat dan platform komputer yang berbeda-beda, maka web harus bersifat universal dan dapat diakses melalui beragam platform. Karena itu dokumen web ditulis sebagai dokumen hypertext dengan menggunakan Hyper Text Markup Language (HTML). HTML merupakan bahasa markup yang dipakai untuk mendefinisikan isi, layout, dan format sebuah dokumen. Representasi dokumen yang dihasilkan bergantung pada kode kode HTML yang dituliskan untuk dokumen tersebut. Dengan HTML , sebuah dokumen dengan penampilan yang kompleks dapat disajikan hanya dengan menuliskan kode -kode HTML yang berbasis plain text (file berformat teks, bukan file biner). Karena itu dokumen web disebut dokumen hypertext, dan karena itu pula dokumen web dapat ditransmisikan dan dibaca dengan mudah di seluruh dunia sekalipun pada platform yang berbeda-beda Dokumen web dapat dibuat secara statik maupun dinamik. Web statik merupakan dokumen web yang dibentuk dengan menggunakan HTML murni, dikatakan statik karena isinya bersifat tetap atau tidak berubah sampai dilakukan perubahan pada kode HTML nya. Web dinamik adalah dokumen web yang isinya bisa berubah disesuaikan dengan berbagai keadaan seperti waktu, tempat, ataupun pilihan pengguna. Dokumen web dinamik dibentuk dengan menggunakan pemrograman yang menghasilkan HTML sebagai bentuk output
3
1 Pengantar Web Programming
Dokumen web pada dasarnya dibentuk dengan menggunakan HyperText Markup Language (HTML). Sebuah dokumen web akan tampil sesuai dengan kode HTML yang ditulis, dan hanya berubah apabila kode HTML -nya dirubah sebagian atau seluruhnya, atau dapat dikatakan bahwa dokume web dengan HTML bersifat statik. Dalam perkembangannya, web saat ini sudah digunakan untuk aplikasi yang lebih luas, dan tidak terbatas pada informasi yang sifatnya statik saja. Web dinamik adalah dokumen web yang isinya bisa berubah disesuaikan dengan berbagai keadaan seperti waktu, tempat, ataupun pilihan pengguna. Web dinamik dibentuk dengan menggunakan teknik pemrograman dalam bahasa pemrograman tertentu yang menghasilkan HTML sebagai bentuk output. Webmerupakan satu bentuk komunikasi data berarsitektur client-server, di mana sebuah client yang membutuhkan layanan web harus terkoneksi dan melakukan request ke sedikitnya satu server yang khusus melayani web (web server), dan server akan memberikan respon atas request dari client tersebut dengan mengirimkan dokumen web yang diminta lalu ditampilkan melalui program browser di client. Berdasarkan arsitektur client-server tersebut, maka pemrograman web dapat dilakukan di sisi server (server-side programming) maupun di sisi client (client-side programming). Pada pemrograman client-side, kode program yagn akan menghasilkan dokumen web akan di kirim ke web browser, dan web browser akan mengeksekusi program untuk kemudian menampilkan hasilnya. Pada pemrograman server-side, program akan dieksekusi oleh server dan hasilnya akan dikirim ke browser client untuk di tampilkan. Penggunaan client-side programming dan server-side programming memiliki keuntungan dan kelemahannya masing-masing, dan digunakan sesuai denga n kebutuhannya, namun keduanya juga dapat digabungkan untuk mendapatkan performance aplikasi web yang lebih baik. Keuntungan client-side programming, aktifitas yang hanya berhubungan dengan tampilan dan validasi di sisi pengguna/pembaca tidak membebani server dan proses bisa melibatkan event pada browser client. Pemrograman client-side tidak cukup baik untuk aplikasi web yang membutuhkan faktor keamanan, karena script program ikut di dalam kode HTML yang di-download oleh browser user atau di-download sebagai file eksternal, sehingga pengguna bisa mengakses source-code program. Pemrograman yang dieksekusi di sisi server (server-side) memungkinkan pengembangan web dinamik yang melibatkan akses data, serta aktifitas yang membutuhkan autentikasi dan security. Permasalahan pada pemrograman server-side adalah terkait dengan beban 4
server jika harus melayani jumlah pengguna yang banyak secara bersamaan ( concurrent). Karena itu dalam disain program, ef isiensi perlu menjadi perhatian. Bahasa pemrograman yang peling populer untuk pemrograman web client-side adalah JavaScript, dan bahasa-bahasa yang banyak di pakai untuk pemrograman server-side antara lain PHP, Perl, Python, ASP, JSP, dan lain -lain, namun dalam tutorial ini, kita membatasi hanya pada bahasa pemrograman PHP yang banyak digunakan dan relatif mudah untuk dipelajari.
JavaScript JavaScript pertama kali dikembangkan oleh Brendan Eich pada Netscape Navigator 2.0, pada tahun 1996, dan hingga saa t ini dapat dijalankan pada hampir semua browser populer terbaru. Standart JavaScript disahkan oleh ISO pada tahun 1998 dan sampai saat ini masih terus dikembangkan. Java dan JavaScript adalah dua bahasa yang sama sekali berbeda, baik dari segi konsep maupun disain. Java (dikembangkan oleh Sun Microsystems) adalah bahasa pemrograman yang sangat kompleks dan powerful seperti C atau C++.
HTML bukanlah bahasa pemrograman, tetapi dengan tambahan JavaScript, HTML menjadi memiliki tools pemrograman, yang memun gkinkan sebuah dokumen web dapat:
Menghasilkan tampilan dokumen web yang dinamis dengan pemanfaatan variabel-variabel dan kontrol struktur dari JavaScript
Merespon atau memberikan reaksi terhadap event pada browser seperti klik mouse, atau menutup dan memb uka window browser
Melakukan validasi data pada form HTML
JavaScript dalam HTML JavaScript disisipkan ke dalam kode HTML dengan menggunakan pasangan tag <script> .. , dan atribut type digunakan untuk mendefinisikan tipe bahasa <script type="text/javascript"> document.write("Hello World!");
5
Script JavaScript bisa ditempatkan pada bagian , pada bagian , ataupun pada dan sekaligus dari HTML, disesuaikan dengan dimana JavaScript diperlukan <script type="text/javascript"> .... <script type="text/javascript"> ....
JavaScript juga dapat disimpan pada file eksternal yang nantinya di -include ke dalam dokumen HTML <script src="namafile.js">
Cara ini memungkinkan penggunaan bersama satu set kode JavaScript untuk sejumlah dokumen HTML tanpa harus menuliskannya kembali di setiap dokumen. Sebagaimana layaknya bahasa pemrograman, JavaScript ditulis dalam bentuk urutan statemen, eksekusi akan dilakukan oleh browser dan setiap statemen output JavaScript hasilnya akan langsung ditampilkan oleh browser. Contoh: <script type="text/javascript"> document.write("
Judul Halaman
"); document.write("
Ini paragraf pertama
"); document.write("
Ini paragraf kedua
");
Contoh output dengan proses seleksi: <script type="text/javascript"> var d=new Date(); var time=d.getHours(); if (time<10) {
6
document.write("Selamat Pagi"); }
JavaScript Function Untuk mencegah agar script tidak langsung dieksekusi oleh browser, kode JavaScript dapat disimpan dalam bentuk function. Function akan dieksekusi melalui pemanggilan function tersebut atau dipicu oleh sebuah event (lihat Event JavaScript). Pemanggilan function dapat dilakukan oleh kode JavaScript lain di seluruh bagian dokumen HTML Function pada JavaScript dapat dituliskan pada bagian maupun dari HTML, termasuk melalui pemanggilan JavaScript sebagai file eksternal (file .js) , namun untuk memastikan function telah dibaca atau di-load oleh browser, dan untuk function yang akan digunakan/dipanggil berulangkali dalam sebuah dokumen, sebaiknya function JavaScript di simpan di bagi an dari dokumen HTML. <script type="text/javascript"> function tampilpesan() { alert("Hello World!"); }
Sintaks untuk menuliskan function pada JavaScript: function nama_function (var1,var2,...,varX ) { .. kode dari function di tulis di sini .. }
var1, var2, sampai varX adalah parameter yang akan dilewatkan pada function. Function tanpa parameter tetap menggunakan t anda kurung () pada nama function. Jika function menghasilkan nilai balik/nilai hasil ( return value) maka digunakan statement return. function prod(a,b) { x=a*b; return x; }
7
Jika function di atas di panggil dengan sintaks hasil=prod(2,3);
maka variabel hasil akan bernilai 6, karena function prod() menghasilkan nilai balik berupa hasil kali kedua parameternya ( a dan b). Event dan JavaScript Setiap element dari halaman web umumnya memiliki event tertentu yang dapat digunakan untuk memicu eksekusi dari function JavaScript. Bahkan untuk bisa memanfaatkan event, selalu digunakan bersama dengan function yang sudah didefinisikan untuk merespon event tersebut. Contoh event: onclick : klik mouse onload : loading halaman web atau file image (gambar) onunload : unloading halaman web atau file image (gambar) onmouseover/onmouseout : melewatkan mouse diatas hot-spot (mis.: link) pada halaman web onfocus/onblur : pemilihan input-box pada form HTML onchange : merubah isi input-box pada form HTML onsubmit : melakukan submit sebuah form HTML Contoh pemanfaatan event pada JavaScript: <script type="text/javascript"> function mouseOver() { document.b1.src ="webmail_b1.jpg"; } function mouseOut() { document.b1.src ="webmail_b0.jpg"; }
8
Penulisan kode JavaScript bersifat case -sensitive, sehingga dalam menulis kode JavaScript, penggunaan huruf kecil dan huruf besar harus diperhatikan. Umumnya reserverd word dari JavaScript seperti function dan return ditulis dalam huruf kecil
PHP PHP adalah singkatan dari “PHP: Hypertext Preprocessor” , merupakan bahasa scripting yang bekerja di sisi server, yang banyak digunakan untuk pengembangan aplikasi web. PHP dikembangkan oleh Rasmus Lerdof sejak tahun 1997 pada server web Apache. Server web Apache sendiri saat ini merupakan server web terpolpuler dan sudah tersedia dalam berbagai platform server seperti UNIX, Linux, Windows, dan Mac. Sintax PHP Kode PHP selalu ditulis di dalam blok yang di awali dengan tanda , atau dapat juga di tulis dengan bentuk singkat dan ?>. Akan tetapi untuk mendapatkan kompatibilitas maksimum, dianjurkan untuk menggunakan bentuk yang pertama
Karena pada dasarnya akan menghasilkan kode HTML yang ak an membentuk dokumen web, maka file source code PHP akan terlihat seperti file HTML yang disisipi dengan kode-kode PHP
Setiap baris perintah PHP diakhiri dengan tanda semicolon (;), dan file berisi kode PHP disimpan dengan ekstensi .php, .php3, atau .phtml. Jika file HTML yang mengandung kode PHP disimpan dengan ekstensi .html, maka kode -kode PHP tersebut akan terbaca sebagai isi dokumen.
9
Variabel pada PHP Variabel digunakan untuk menampung nilai t ertentu berupa data text atau data nilai tertentu selama eksekusi program. Variabel pada PHP sangat fleksibel, tidak seperti kebanyakan bahasa pemrograman yang mengharuskan sebuah variabel dan tipenya dideklarasikan terlebih dahulu sebelum digunakan, pada PHP tidak perlu ada deklarasi variabel dan tipe data aan ditentukan otomatis pada saat digunakan pertama kali sesuai dengan nilai yang diberikan
Nama variabel pada PHP selalu didahului dengan tanda $, dengan aturan penamaan yang sama seperti bahasa pemrograman lain nya, antara lain seperti dimulai dengan huruf atau underscore ( _ ) setelah tanda $, tidak dimulai dengan angka dan tidak mengandung spasi atau tanda baca
Kode PHP tidak akan terlihat jika kita mencob a menggunakan fasilitas View Source dari browser, akan yang terlihat hanya kode -kode HTML murni karena semua kode PHP sudah diinterpretasi oleh server dan menghasilkan output HTML sebelum di kirim ke client
Lebih jauh tentang PHP dan pemanfaatannya bersa ma JavaScript dalam pemrograman web akan di uraikan dalam pembahasan -pembahasan selanjutnya.
10
2 Teknik Pemrograman
Struktur Kontrol Pada prinsipnya, program dieksekusi secara berurutan (sekuensial) mulai dari baris pertama hingga baris terakhir dari kode program. Namun karena berbagai kondisi logika, seperti pemilihan dua nilai atau lebih, atau proses yang harus dilakukan berulang -ulang, maka dikenal tiga struktur kontrol dalam pemrograman:
Sekuensial
Pencabangan
Perulangan
Karena struktur sekuensial merupakan sifat natural dari program, maka tidak ada statement khusus untuk kontrol sekuensial, tetapi untuk pencabangan dan perulangan terdapat sejumlah statement khusus yang bisa digunakan sesuai keperluan Pencabangan dengan IF .. ELSE .. Statemen IF .. ELSE .. digunakan untuk memilih untuk menjalankan salah satu dari dua proses berdasrkan sebuah kondisi, proses pertama dijalankan jika kondisi bernilai benar (True) dan proses kedua dijalankan jika kondisi bernilai salah ( False) if (kondisi) .. kode yang akan dijalankan jika kondisi bernilai benar .. ; else .. kode yang akan dijalankan jika kondisi bernilai salah .. ;
Contoh:
11
Jika kode yang akan dieksekusi lebih dari satu baris, maka kode harus ditulis dalam blok yang ditandai dengan tanda kurung kurawal {} "; echo "Selamat berakhir pe kan!"; echo "Sampai jumpa!"; } ?>
Pencabangan dengan IF .. ELSEIF .. ELSE .. Jika terdapat lebih dari satu kondisi yang akan bernilai benar, maka digunakan statement IF ..
ELSEIF .. ELSE ..
if (kondisi1) .. kode yang akan dijalank an jika kondisi1 bernilai benar .. ; Elseif (kondisi2) .. kode yang akan dijalankan jika kondisi2 bernilai benar .. ; else .. kode yang akan dijalankan jika semua kondisi bernilai salah .. ;
Contoh:
Pencabangan dengan SWITCH Jika pilihan dan kondisi cukup banyak, maka penggunaan statemen IF .. ELSEIF .. menjadi tidak efisien baik dalam penulisan kode maupun dalam eksekusi oleh processor, karena itu disarankan untuk menggunakan statemen SWITCH
12
switch (ekspresi) { case nilai1: .. kode yang akan dijalankan jika ekspresi = nilai1.. ; break; case nilai2: .. kode yang akan dijalankan jika ekspresi = nilai2.. ; break; default: kode yang akan dijalankan jika ekspresi tidak sama dengan nilai-nilai yang tersedia ; }
Contoh
Stetemen break digunakan untuk keluar dari statemen switch dan mencegah eksekusi baris di bawahnya apabila satu pilihan telah memen uhi. Pilihan default akan diambil apabila tidak ada nilai yang sama dengan ekspresi. Perulangan dengan WHILE Statemen WHILE digunakan untuk melakukan proses yang berulang selama satu kondisi masih memenuhi while (kondisi) { ..Kode yang akan di jalankan selama kondisi masih memenuhi .. }
13
Contoh "; $i++; } ?>
Perulangan dalam statemen WHILE pada prinsipnya tak berhingga, karena itu selalu dibutuhkan cara untuk mengatur dan membatasi perulangan seperti penggunaan counter (penghitung). Pada contoh, statemen $i++ yang berarti penambahan nilai (increment) variabel $i dengan 1 berfungsi sebagai counter. Tanpa adanya pembatasan perulangan, proses perulangan tidak akan berhenti dan menyebabkan program gagal bekerja Perulangan dengan DO .. WHILE Perulangan dengan statemen DO .. WHILE sama dengan perulangan dengan statemen WHILE , bedanya pada pengujian kondisi masih memenuhi atau tidak dilakukan setelah proses dijalankan, sehingga proses dalam perulangan dengan DO ..WHILE selalu akan dijalankan minimal satu kali do { ..Kode yang akan di jalankan selama kondisi masih memenuhi.. } while (kondisi)
Contoh: "; $i++; } while($i<=5) ?>
14
Perulangan dengan FOR Untuk proses perulangan yang jumlah perulangannya sudah diketahui, digunakan statemen FOR. for (nilai_awal; kondisi; increment) { ..Kode yang akan di jalankan selama kondisi masih memenuhi.. }
Jumlah perulangan pada statemen FOR ditentukan dari kombinasi nilai_awal , kondisi , dan increment , sehingga tidak membutuhkan counter di dalam proses perulangannya Contoh "; } ?>
Function dan Procedure Function dan Procedure merupakan istilah untuk subprogram atau modul program yang berdiri sendiri dan didisain untuk menjalankan satu fungsi tertentu. Keuntungan dengan memecah-mecah program menjadi sejumlah function dan procedure antara lain:
memudahkan pembuatan program dengan memilah -milah dan menyelesaikan masalah dalam modul-modul program yang lebih kecil
memudahkan penelusuran bila terjadi kesalahan, karena cukup melakukan penelusuran pada modul tertentu saja, tidak perlu pada keseluruhan program
memungkinkan penggunaan ulang (reuse) modul program untuk bagian lain dari program atau untuk proyek pengembangan program yang lain
function dan procedure pada prinsipnya dan cara penulisannya sama, yang membedakan adalah pengembalian nilai (return value), hasil eksekusi function memberikan nilai balik, sedangkan procedure tidak memberikan nilai balik. Pada pemrograman PHP, function dan procedure sama-sama dibentuk dengan menggunakan statemen function , yang membedakannya adalah penggunaan statemen return pada function untuk pengembalian nilai. Contoh procedure:
15
Tanda {} merupakan tanda awal dan akhir blok function, kode -kode dari function/ procedure dituliskan di antara dua tanda tersebut. Variabel $x dan $y pada contoh function merupakan parameter untuk memberikan nilai masukan kepada function atau procedure. Function menghasilkan nilai, sehingga function dapat dianggap sebuah nilai, dan sebuah nilai tidak dapat dituliskan berdiri sendiri, karena itu pemanggilan function harus dinyatakan dalam bentuk ekspresi (pernyataan) atau bersama stat emen lain $hasil = add(1,16);
// pemanggilan dalam bentuk ekspresi
echo add(1,16);
// pemanggilan bersama statemen lain
tulis_nama();
// pemanggilan procedure
16
Sejumlah function/procedure buatan sendiri (user defined function) dapat dikoleksi dalam file tersendiri sebagai library dan dipanggil dari file program PHP yang lain dengan function include() , atau require() yang merupakan function bawaan dari PHP
include() dan require()
pada prinsipnya memiliki fungsi dan cara kerja yang sama, tetapi berbeda pada penanganan error akibat kesalahan nama file yang di -include atau file yag dimaksud tidak ada. Function include() hanya akan memberikan warning atau pesan kesalahan dan melanjutkan ekseskusi program, sedangkan require() akan menghentikan proses eksekusi program setelah memberikan warning.. Untuk integritas progam, sangat dianjurkan untuk menggunakan require() untuk menginclude-kan file eksternal atau library/koleksi fungsi ke dalam program. Dengan mengoleksi function/procedure sebagai library, akan menghemat waktu pengembangan aplikasi-aplikasi berikutnya, karena function yang dikoleksi nantinya bisa dimanfaatkan kembali (reuse) dengan mudah.
PHP sudah menyediakan sejumlah besar built -in function yang siap digunakan untuk berbagai keperluan, referensi lengkap tentang koleksi built -in function dapat dilihat di manual PHP (http://www.php.net/manual/en/)
17
3 Pemrosesan Web Form
Form HTML Form (formulir) pada halaman web merupakan sarana untuk menerima input/masukan dari pembaca/pengguna web, untuk berbagai keperluan seperti registrasi user, login user, feedback pembaca, buuk tamu, survey on-line, dan lain-lain. Untuk menggunakan form HTML, digunakan pasangan tag dan di dalamnya di tuliskan sejumlah tag lain sebagai sarana ionput data
Form pada HTML menyediakan sejumlah sar ana input seperti: text, password, radiobutton, checkbox, option, textarea Text box Untuk pengisian teks singkat seperti nama, nama user, alamat, atau sejenisnya digunakan tag bertipe text
Atribut name pada tag merupakan identitas dari elemen input pada form yang nantinya akan mewakili data yang dimasukkan, karena itu harus bersifat unik. Atribut value digunakan untuk memberikan nilai awal atau nilai default dari isian.
18
Password Input bertipe password , pada dasarnya sama dengan input bertipe text, hanya saja saat pengetikan pada kotak isian password, karakter yang diketikkan akan disembunyikan
Radio Button Untuk isian yang berbentuk pilihan , digunakan tag bertipe radio (radio button)
Atribut name pada tipe radio agak unik, nama yang sama digunakan untuk sejumlah input tipe radio yang merupakan pilihan unt uk satu nilai. Nilai yang nantinya diambil adalah value dari input radio yang dipilih Checkbox Untuk isian pilihan yang memungkinkan pemilihan lebih dari satu biasanya digunakan input tipe checkbox
Nilai yang akan dikirim adalah nilai logika True jika checkbox bersangkutan terpilih, atau False jika checkbox tidak dipilih
19
Submit dan Reset Tipe input submit dan reset bukan untuk membuat isian data, tetapi digunakan untuk menampilkan tombol yang jika di klik akan mengakhiri pengisian form dan mengirimkan datanya untuk diproses (submit) atau untuk membatalkan/mengosongkan isian form
Tipe submit dan reset tidak memerlukan nama, atribut value digunakan untuk menuliskan teks pada tombol Hidden Jika terdapat data yang bersifat default dan tidak memerlukan masukan dari pembaca/pengguna yang akan ikut dikirim bersama form, dapat digunakan tipe input hidden
Tipe input hidden tidak akan tampil dihalaman web, tetapi nama dari atribut name dan data yang disikan pada atribut value akan ikut dikirim pada saat form di -submit Select dan Option Untuk memudahkan pengisian data oleh pengguna, isian yang sudah mempunyai pilihan bisa disajikan dalam bentuk drop-down box/combo-box dengan menggunakan tag <select> .. yang didalamnya dituliskan sejumlah pilihan, masing -masing pilihan menggunakan tag
20
Nilai yang akan dikirim adalah value dari option yang terpilih Text Area Jika isian berupa teks yang panjang seperti komentar pada buku tamu, atau artikel online, digunakan tag yang memungkinkan pengi sian data teks yang panjang dalam banyak baris
Atribut rows dan cols menentukan ukuran tampilan textarea sebanyak jumlah baris (rows) dan jumlah kolom (cols). Isian yang melebihi jumlah rows tetap dimungkinkan dan textarea akan menampilkan penggulung ( scrollbar)
Validasi Form “Garbage in, garbage out”, jika sampah yang masuk maka sampah juga yang akan keluar, ungkapan ini masih selalu digunakan untuk mengingatkan agar selalu memastikan bahwa data yang diinput sudah merupakan data yang valid dan benar agar tidak terjadi kesalahan proses dan mengakibatkan kesalahan output atau informasi yang akan dihasilkan. Web merupakan media dengan kar akteristik pengguna yang sangat beragam, baik dari segi tingkat pendidikan hingga perilaku, sehingga disainer web tidak bisa menganggap bahwa pengguna selalu mengerti tentang informasi yang disajikan dan akan memberikan informasi yang selalu valid melalui form. Karena itu proses validasi form selalu harus menjadi perhatian. Validitas data disini tidak termasuk kebenaran data dalam arti kesesuaian dengan fakta, tetapi lebih kepada kualitas fisik data, seperti memastikan tidak terjadi kesalahan entri tanggal 30-02-1008 (tidak ada tanggal 30 di bulan Februari), alamat email mengandung spasi atau dengan dua tanda @, field/isian yang wajib diisi, verifikasi password yang tidak sama, dan lain sebagainya. Validasi dapat dilakukan baik di sisi client, maupun di sisi server. Validasi di sisi client dianjurkan karena proses bisa lebih cepat dan tidak/belum melibatkan koneksi ke server. Validasi di sisi server juga memiliki keuntungan karena bisa langsung di lakukan verifikasi dengan data pembanding dari koleksi databa se yang ada. Semakin banyak titik untuk melakukan validasi semakin menjamin bahwa data yang masuk bukan data sampah.
21
Validasi di sisi client akan di proses sebelum data dari form dikirimkan, karena itu proses akan lebih cepat karena hanya melibatkan proses di browser. Contoh validasi di sisi client untuk isian yang wajib di isi ( required fields) <script type="text/javascript"> function wajib_di_isi(field,pesan) { with (field) { if (value==null || value=="") { alert(pesan); return false; } else { return true } } } function validasi_form(thisform) { with (thisform) { if ( wajib_di_isi(email,"Alamat Email harus di isi!") == false ) { email.focus(); return false; } } }
Atribut onsubmit adalah event yang akan memanggil fungsi validasi_form() yang akan memeriksa isi field tertentu
22
Pemrosesan Form Untuk dapat diproses lebih lanjut data form akan dikirim ke server, dan akan diproses oleh server-side program. Untuk itu form haruis diberi atribut untuk memberikan informasi nama file prgram yang akan memprosesnya di sisi server
Atribut action di isi dengan informasi nama file yang akan memp roses data form di sisi server (dalam contoh: file regist.php), dan atribut method digunakan untuk menentukan metode pengiriman data ke server, ada dua metode yangbisa digunakan, metode GET dan metode POST. Metode GET akan mengirimkan data melalui request URL ke server, sedangkan metode POST akan mengrimkan data form melalui koneksi tersendiri ke server. Di sisi server semua nilai atribut name pada form akan dibaca sebagai variabel jika setting REGISTER_GLOBAL pada server diset ON, dan akan dibaca sebagai array jika REGISTER_GLOBAL pada server di-set OFF. // regist.php // untuk REGISTER_GLOBAL yang di -set ON
// regist.php // untuk REGISTER_GLOBAL yang di -set OFF
Untuk alasan keamanan, disarankan untuk REGISTER_GLOBAL pada server di-set OFF. Pembacaan array $_GET atau $_POST disesuaikan dengan metode pengiriman data form
23
4 Akses Data
MySQL Database adalah kumpulan data yang besar, yang memiliki struktur dan atribut tertentu, sehingga mudah untuk diorganisasi, dipanggil kembali ( retrieve), atau dimodifikasi. MySQL adalah salah satu Database Manajemen System (DBMS) yang populer dan banyak digunakan, bahkan menjadi standar de-facto untuk database bagi layanan berbasis web dengan digunakannya MySQL oleh situs -situs besar di internet seperti Yahoo dan Google. Struktur Data Base Seperti lazimnya DBMS yang populer lainnya, MySQL juga memiliki struktur database yang merupakan himpunan sejumlah tabel, dan setiap tabel merupakan himpunan data dengan atribut (field) tertentu. Setiap data di susun dalam setiap baris tabel, dan setiap atribut data disusun sebagai kolom di dalam tabel. Atribut atau field data merupakan bagian dari data yang memilik i kriteria atau klasifikasi tertentu, seperti field nama, field alamat, field nomor telepon, kumpulan semua field membentuk satu baris/satu record data. DATABASE Tabel Field
Field Tabel Field
Field Field Tabel Field
Field Field Field
Field Field
Field
record
Tipe Data Atribut/field dari data memiliki tipe dan ukuran tertentu sesuai dengan jenis da ta yang akan disimpan. Pada umumnya terdapat tiga tipe data utama, yaitu
tipe data numerik, tipe data teks, dan tipe data tanggal 24
Data Numerik int(size) smallint(size) tinyint(size) mediumint(size) bigint(size) decimal(size,d) double(size,d) float(size,d)
Keterangan Menyimpan data bilangan bulat ( integer)
Data Teks char(size)
Keterangan Menampung data teks dengan ukuran jumlah karakter tetap Menampung data teks dengan ukuran jumlah karakter bervariasi sesuai dengan panjang data . Ukuran size untuk menentukan ukuran maksimum Menampung data teks dengan ukuran jumlah karakter bervariasi, dengan maximum 255 karakter Menampung data teks dengan ukuran jumlah karakter bervariasi, dengan maximum 65535 karakter Menampung data teks dengan ukuran jumlah karakter bervariasi, dengan maximum 16777215 karakter Menampung data teks dengan ukuran jumlah karakter bervariasi, dengan maximum 4294967295 karakter
varchar(size)
Tinytext Text blob (biner) Mediumtext mediumblob (biner) Longtext longblob (biner)
Menampung data bilangan pecahan (real)
Tipe blob digunakan untuk menampung data binary seperti image/citra
Data Tanggal Keterangan date (yyyy-mm-dd) Menampung data tanggal datetime (yyyy-mm-dd hh:mm:ss) timestamp (yyyymmddhhmmss) time (hh:mm:ss)
SQL Structured Query Language (SQL) adalah merupakan standar bahasa khusus untuk melakukan query (permintaan) data dari database, yang sudah dipakai pada banyak DBMS, termasuk MySQL, dan juga sudah dapat digunakan pada banyak bahasa pemrograman untuk mengakses server database. Berdasarkan fungsinya, statenmen SQL dikelompokkan dalam dua kelompok, yaitu kelompok Data Definition Language (DDL) dan kelompok Data Manipulation Language (DML)
25
Data Definition Language Statemen-stateman SQL dalam kelompok DDL , lebih banyak di gunakan untuk membentuk dan/atau memodifikasi struktur database dan struktur table dalam database, karena itu disebut Data Definition. Statemen yang banyak digunakan dalam kelompok DDL ini, antara lain:
CREATE DATABASE , digunakan untuk membuat
database ba ru
CREATE DATABASE namadatabase;
digunakan untuk mendefinisikan dan membuat struktur sebuah tabel dengan sejumlah field beserta tipe dan ukurannya CREATE TABLE
Data Manipulation Language Manipulasi data pada database pada dasrnya merupakan aktifitas penyimpanan ( store), pemanggilan kembali data (retrieving), penyuntingan (editing dan deleting). Statemen SQL untuk DML yang paling sering digunakan, antara lain:
INSERT , digunakan untuk mengisi
record baru kedalam sebuah tabel pada database
// cara 1 INSERT INTO namatable(Field1, Field2, Field3) VALUES (‘nilai1’, nilai2’, ‘nilai3’) ; // cara 2 INSERT INTO namatable SET Field1=‘nilai1’, Field2=‘nilai1’, Field3=’nilai3’) ;
digunakan untuk memanggil/mencari data dengan atribut dan kriteria tertentu dari satu atau lebih tabel SELECT
// contoh 1 SELECT * FROM namatable; // contoh 2 (dengan atribut/field tertentu) SELECT Field1, Field2 FROM namatable;
digunakan bersma-sama dengan statemen lain untuk menentukan kriteria data yang akan dimanipulasi WHERE
26
// contoh 1 SELECT * FROM user WHERE nama=’sofyan’; // contoh 2 (dengan atribut/field tertentu) // menampilkan nama dengan huruf depan s SELECT nama, alamat FROM user WHERE nama LIKE ‘s%’;
digunakan bersama-sama dengan statemen query SELECT untuk mengatur urutan dari data hasil query ORDER
// contoh 1 SELECT * FROM user WHERE nama=’sofyan’ ORDER BY nama; // contoh 2 (dengan atribut/field tertentu) // menampilkan nama dengan huruf depan s // urutan descending SELECT nama, alamat FROM user WHERE nama LIKE ‘s%’ ORDER BY nama DESC;
digunakan untuk merubah satu atau beberapa baris data, digunakan bersama statemen WHERE untuk menentukan kriteria data yang ak an dirubah UPDATE
UPDATE user SET nama=’sofyan thayf’ WHERE nama=’sofyan’;
digunakan untuk menghapus satu beberapa baris data, digunakan bersama statemen WHERE untuk menentukan kriteria data yang akan dihapus. DELETE
DELETE FROM user WHERE nama=’sofyan’;
PHP-MySQL Sejumlah function telah tersedia pada PHP untuk melakukan akses data ke server database yang menggunkaan MySQL Membuat Koneksi ke Database Untuk melakukan koneksi ke server database MySQL dari aplikasi PHP, digunakan funcrion mysql_connect( ‘namahost’, ‘namauser’, ‘password’), dengan string nama host, nama user MySQL, dan password user sebagai parameter.
27
{ die('Could not connect: ' . mysql_error()); } ...
aktifitas manipulasi data ...
mysql_close($konek ); ?>
Untuk nama host, jika script PHP berada di server web pada mesin yang sama dengan server MySQL maka bisa digunakan ‘localhost’, jika berada pada mesin yang berbeda, digunakan IP address dari host dimana MySQL server di jalankan. Untuk menutup koneksi, digunakan mysql_close() Membuka Database Seteleh terkoneksi ke server MySQL, database yagn akan di akses harus dibuka terlebih dahulu sebelum melakukan manipulasi (meliputi searching, retrieving, editing, atau deleting) terhadap data. Untuk membuka database, digunakan mysql_select_db( ‘namadatabase’)
aktifitas manipulasi data ...
mysql_close($konek ); ?>
Manipulasi Data Untuk melakukan manipulasi data pada MySQL, digunakan query dalam bahasa SQL berbentuk string query. Untuk mengirimkan string query dalam bahasa SQL dari PHP, digunakan function mysql_query( string_query ). Strnig query SQL dilewatkan sebagai parameter pada function mysql_query() dan hasilnya ditampung pada sebuah variabel sebagai kontainer.
28
Untuk mengekstrak data hasil query digunakan function mysql_fetch_row( hasil_query ) atau function mysql_fetch_array( hasil_query ) dengan variabel kontainer hasil query mysql_query() dilewatkan sebagai parameter. Karena hasil query biasanya berisi sejumlah baris data (tuples), maka biasanya ekstraksi data menggunakan function mysql_fetch_row() atau function mysql_fetch_array() dilakukan dalam perulangan
Jika menggunakan mysql_fetch_row() , data dibaca sebagai array dengan nomor indeks sesuai dengan urutan field yang di query (indeks 0 adalah field pertama), sedangkan jika menggunakan function mysql_fetch_array(), maka data dibaca sebagai array dengan indeks bisa menggunakan nomor urut field, atau bisa juga menggunakan string nama field
Function mysql_num_rows( hasil_query ) digunakan untuk mendapatkan informasi jumlah baris data dari hasil query yang menggunakan string query SELECT
Untuk menghitung junlah baris hasil query yang menggunakan string query INSERT, UPDATE , dan DELETE , dibunakan function mysql_affected_rows(hasil_query)
29
5 Array
Array adalah variabel yang dapat menampung lebih dari satu data dengan hanya satu nama variabel. Sejumlah data, yang umumnya sejenis, dapat ditangani dengan mudah hanya dengan menggunakan satu nama variabel. Setiap data menjadi elemen array yang masing-masing memiliki nomor index atau ID s ebagai pengenal setiap elemen
Berdasarkan cara pemberian identitas elemennya, array pada PHP dibagi menjadi dua jenis, yaitu array numerik (numeric array) dan array asosiatif (associative array)
Array Numerik Array numerik adalah array dengan indeks atau kunci setiap elemennya menggunakan numerik (numeric ID key) berupa bilangan integer, dengan nomor indeks 0 untuk elemen pertama
$nama[0]." "; $nama[1]." "; $nama[6]." "; $nama[7]." ";
Array Asosiatif Array asosiatif adalah satu cara yang akan sangat memudahkan apabila sebuah nilai perlu dihubungkan atau diasosiasikan dengan nilai lain yang menjadi elemen array. "Kuning" ); // atau.. $warna['jeruk'] = "Oranye"; $warna['apel'] = "Merah"; $warna['mangga'] = "Hijau"; $buah = 'pisang'; echo $warna[ $buah ]." ";
// --> Hijau
?>
Satu keuntungan dari array asosiatif pada PHP adalah dengan dimungkinkannya penggunaan string sebagai ID dari elemen array, akan memudahk an dalam penulisan program karena jenis data dari elemen array dapat diketahui dari ID, sehingga memperkecil kemungkinan kesalahan penanganan data array. Hal ini sangat membantu untuk penanganan data dari field-field database
Array multidimensi Jika setiap elemen dari sebuah array berisi array lagi, amaka akan membentuk array 2 dimensi. Elemen dari array dapat terbentuk dari array lagi, dan elemen dari sub-array juga dapat berisi array, dan seterusnya, membentuk array multi-dimensi
31
// cara lain $mhs[] = array(‘nim’=>‘52004023’, ‘nama’=>‘Rosmala’, ‘tglahir’=>‘1982-08-08’
);
?>
Menangani Data dalam Array Perulangan dengan FOREACH Untuk memudahkan penanganan data dalam array, yang bisa jadi jumlah elemennya tidak terpantau lagi sepanjang aktifitas program, bisa digunakan stetemen perulangan FOREACH, yang mengambil setiap elemen array sebagai kontrol perulangannya, perulangan akan berhenti setelah semua elemen array terbaca. ”; } ?>
Menangani field database Data hasil query database merupakan kumpulan record yang sesuai dengan kriteria yang diinginkan dalam query, karena itu penanganannya dilakukan sebagai array dua dimensi. Untuk tetap menggunakan nama field sebagai identitas data, maka digunakan array asosiatif dengan nama field sebagai ID
= mysql_fetch_array( $hasilq ) ) $dt[‘namauser’]; $dt[‘alamat’]; $dt[‘telepon’];
?>
32
6 Manipulasi String
Operasi String Memeriksa String Kosong Untuk melakukan pengecekan a pakah sebuah variabel berisi string kosong atau tidak, dapat digunakan function isEmpty()
Function trim() digunakan untuk menghilangkan spasi di depan atau di belakang string, karena spasi tetap dianggap sebagai string. Cara lain untuk memeriksa string kosong adalah dengan function strlen()
Pada prinsipnya strlen() berfungsi untuk menghitung jumlah karakter dalam string Membandingkan String PHP menyediakan dua operator perbandingan untuk mebandingkan string, yaitu == dan ===. Operator == akan meng-casting (mengkonversi tipe) variabel yang berisi data bertipe non-string menjadi string sebelum membandingkan, sementara operator === langsung membandingkan, sehingga hasilnya akan bernilai false jika tipe data berbeda. $n $s $s $s
= 3; = ‘3’; == $n --> True === $n --> False
33
Pengulangan Untuk menuliskan karakter secara berulang, digunakan function str_repeat()
// --> ‘**********’
// str_repeat() jauh lebih efisien dari pada for( $u=1; $u<=10; $u++ ) { echo ‘*’; } ?>
Pencarian Ada dua cara dalam PHP untuk melakukan pencarian string di dalam string lain, yaitu menggunakan function strstr() atau stristr(), dan menggunakan function strpos()
// --> “MA Makassar” // --> “akassar”
Function strstr() mengembalikan dereten string, mulai dari posisi karakter yang dicari, dan function strpos() mengembalikan nomor urut posisi dari karakter yang dicari dalam string, hitungan posisi dimulai dari 0. Function stsrstr() dan strpos() bersifat case-sensitive, sedangkan function stristr() dan stripos() bersifat case-insensisitive, atau tidak mempedulikan huruf bvesar atau huruf kecil
34
Manipulasi String Pemisahan String Function explode() digunakan untuk memisahkan string dengan separator tertentu. Nilai balik dari function explode adalah array yang berisi hasil pemecahan string
// --> 17 // --> 08 // --> 2008
?>
Substring Substring adalah pengambilan (ekstraksi) satu string dari satu string yang lain, pada PHP digunakan function substr()
substr( substr( substr( substr(
$teks, $teks, $teks, $teks,
6 ); 6 , 8 ); 0, 5 ); -3 );
// // // //
--> --> --> -->
KHARISMA Makassar KHARISMA STMIK sar
?>
Penggantian String Untuk melakukan penggantian sebagian dari string digunakan function str_replace() sofyan_at_yahoo.com ?>
35
Karena function str_replace() dapat menerima array sebagai daftar string yagn akan diganti, maka dapat dimanfaatkan untuk mengganti kata -kata yang kurang sopan dalam tulisan hanya anak *!* dan *!* yang baca *!* ?>
Format String Untuk menampilkan string dalam format tertentu digunakan fungsi printf() Dirgahayu RI ke 63 $format = “Indonesia berusia %d tahun”; printf($format, $thn); // --> Indonesia berusia 63 tahun ?>
Tanda %s dan %d adalah type specifier yang menentukan posisi nilai yang akan ditampilkan beserta tipenya. Function printf() juga dapat digunakan untuk merepresentasikan data numerik sesuai format yang diinginkan berdasrakan type specifier-nya 1000001 // tampilkan sebagai karakter ASCII printf( “%c“, $n ); --> A // tampilkan sebagai integer printf( “%d“, $n ); --> 65
36
// tampilkan sebagai floating point printf( “%f“, $n ); --> 65.00000 // tampilkan sebagai string printf( “%s“, $n ); --> 65 // tampilkan sebagai hexadesimal printf( “%X“, $n ); --> 41 ?>
37
7 Cookies dan Session
Web komunikasi data berbasis koneksi yang hanya bekerja berdasarkan request dari client dan response dari server. Satu sesi koneksi hanya terjadi mulai dari request sampai response diterima, setelah itu selesai, dalam arti aktiftas selanjutnya merupakan koneksi baru dan tidak berhubungan dengan aktifitas koneksi sebelumnya. Untuk aktifitas yang persistent diperlukan informasi tambahan yang akan menjadi sarana penghubung antara satu sesi koneksi dengan sesi koneksi berikutnya, minimal untuk mengetahui informasi user atau host pengguna. Untuk itu, disediakan variabel yang akan menampung data tertentu, dan data tersebut akan di baca kembali untuk memastikan bahwa itu adalah koneksi persistent. Teknik dengan penyimpanan variabel ini disebut cookies jika variabel dan data disimpan di sisi client oleh browser, dan sessions jika data disimpan di server
Cookies Untuk menyimpan informasi tertentu di sisi browser agar bisa dibaca kembali pada saat browser yang sama melakukan koneksi, digunakan sarana cookies. Membuat Cookies Untuk membuat cookies, digunakan function setcookies()
Membaca Variabel Cookies Variabel cookies dapat dibaca sebagai array asosiatif $_COOKIE[] dengan nama-nama variabel yang ada sebagai ID elemennya 38
Menghapus Cookies Untuk menghapus variabel cookies, digunakan function setcookies() dengan parameter nama variabel yang akan dihapus tanpa nilai/data
Variabel cookies juga bisa dihapus secara otomatis setelah beberapa waktu yang ditentukan (expire time) saat variabel tersebut dibentuk
Sessions Keterbatasan cookies adalah karena variabel cookies di simpan di browser client, sementara untuk alasan security dan privacy, kebijakan browser client bisa berbeda-beda, termasuk boleh menerima cookies atau tidak. Solusi lain dari cookies adalah dengan menyimpan variabel dan nilainya di server dengan mengunakan session. 39
Memulai Session Untuk memulai session digunakan function session_start() , dan selanjutnya variabel variabel session dapat ditambahkan kedalam array asosiatif $_SESSION[]
Setiap session akan mendapatkan session-ID yang nantinya akan dipropagasi ke setiap halaman yang berhubungan atau membutuhkan variabel -variabel session yang ada. SID adalah konstanta yang otomatis berisi session-ID dari session yang baru dibuka Untuk propagasi (penyebaran) session-ID bisa dengan menggunakan
Cookies Parameter URL (GET method)
Metode propagasi dengan cookies sebenarnya lebih dianjurkan karena lebih aman, tetapi akan bermasalah dengan ditolaknya cookies oleh browser sesuai kebijakan yang berlaku di browser masing-masing. Membaca Variabel Session Sebelum dapat membaca variabel session, session-ID harus di set dan function session_start() di panggil. Untuk propagasi mela laui parameter URL menggunakan htmlspecialchars(SID) , session-ID otomatis telah diset
Menutup Session Untuk menutup session digunakan function session_destroy()
40
8 Penanganan File
File Teks Selain menggunakan database, PHP juga dapat menangani file berbasis teks untuk berbagai keperluan Untuk membuka file teks digunakan function fopen() dan ditampung pada sebuah variabel sebagai file handler
?>
Parameter kedua dari function fopen() adalah mode pembukaan file Mode Description r Read only, pointer file berada di awal file r+ w
Read/Write, pointer file berada di a wal file Write only, membuka dan mengosongkan isi file untuk kemudian ditulisi, atau membuat file baru jika file belum ada
w+
Read/Write, membuka dan mengosongkan isi file, atau membuat file baru jika file belum ada
a
Append, membuka file dan menulis mulai dari akhir (pointer file di akhir file), membuat file baru jika file belum ada
a+
Read/Append, Membuka file dan menulis mulai dari akhir (pointer file di akhir file)
x
Write only, Membuat file baru. Menghasilkan FALSE dan pesan error if jika nama file sudah ada
x+
Read/Write. Membuat file baru. Menghasilkan FALSE dan pesan error jika nama file sudah ada
Untuk menutup file, digunakan function fclose() fclose( $file );
41
Pembacaan Isi File Teks Pembacaan isi file dilakukan dengan melakukan perulan gan hingga ditemukan tanda End Of File (EOF). Pembacaan dapat dilakukan secara baris -per-baris dengan function fgets(), atau secara karakter-per-karakter dengan mengunakan function fgetc() Pembacaan secara baris-per-baris "; } fclose($file); ?>
Pembacaan secara karater-per-karakter
File Upload Untuk banyak keperluan, pengguna/pembaca web biasanya membutuhan sarana untuk melakukan upload file ke server, misalnya untuk upload foto atau dokumen yang akan di sharing melalui web. Upload file bisa dilakukan melalui sarana form web. Persiapan Form Untuk Upload Untuk melayani proses upload file, form web harus di siapkan dengan penambahan tag bertipe file, dan informasi tambahan tentang encoding.
42
Atribut enctype berguna untuk memberitahu server bahwa data dan file upload dikirimkan dalam beberapa koneksi terpisah. Karena pengiriman dilakuka n dalam beberapa koneksi terpisah, maka metode pengiriman yang digunakan adalah metode POST Penanganan File Upload di Server Di sisi server, informasi file upload aan ditangani oleh array asosiatif dua dimensi $_FILES[] , dengan empat parameter utama sebag ai elemennya yaitu: $_FILES[‘userfile’][‘name’] $_FILES[‘userfile’][‘type’] $_FILES[‘userfile’][‘size’] $_FILES[‘userfile’][‘tmp_name’]
ID userfile adalah attribut name dari tag tipe file yang digunakan pada form 204800 ); //ukuran max 200KB { echo “File di-upload: “.$_FILES[‘fileku’][‘name’].” ”; echo “Type file: “. $_FILES[‘fileku’][‘type’].” ”; if( move_uploaded_file( $_FILES[ ‘fileku’][‘tmp_name’],$upfile ) ) { echo “Upload Sukses.”; } } } ?>
Function is_uploaded_file() digunakan untuk mengecek apakah ada file yang di upload dan function move_uploaded_file() untuk memindahkan file dari penyimpanan sementara ke lokasi penyimpanan yang diinginkan di server
43
9 Grafik dan Dokumen
Bekerja Dengan GD PHP memiliki fasilitas untuk membuat image (gambar) sebagai pelengkap i nformasi pada dokumen web yang dihasilkan, sehingga image pada halaman web dapat dibuat secara dinamik juga, tidak statik seperti jika menggunakan image yang sudah jadi hasil dari program image editor. Namun elemen gambar yang dihasilkan akan sangat bergan tung pada kreatifitas dan penguasaan atas fungsi -fungsi image PHP Untuk dapat membuat gambar dengan menggunakan fungsi -fungsi image dari PHP, harus dipastikan bahwa GD Library pada PHP sudah aktif. GD Library adalah ekstensi dari PHP yang menyediakan sarana untuk pembuatan image secara on-the-fly. Membuat Image PHP dengan GD Library menyediakan cukup banyak fungsi untuk membentuk image onthe-fly dalam arti image dibentuk saat dibutuhkan dan tanpa bantuan program aplikasi grafis. Untuk membuat image on-the-fly digunakan function imagecreate() diikuti dengan function lain untuk membuat bentuk dan pewarnaan. Untuk menghasilkan output telah tersedia function khusus untuk menghasilkan output image dalam format yang diinginkan, seperti
imagegif() , menghasilkan
imagepng() , menghasilkan format
image PNG
imagejpg(), menghasilkan format
image PNG
imagewbmp() , menghasilkan format
format image GIF
image WBMP
44
imagepng($im,$namaf); imagedestroy($im); ?>
File yang telah disimpan ke output dengan function imagepng() atau sejenisnya dapat ditampilkan dengan pemanggilan melalui tag dari HTML. Function imagepng() atau sejenisnya tanpa parameter akan langsung menampilka n image ke browser Function imagedestroy() digunakan untuk membersihkan memori dari data -data image handler setelah tidak dibutuhkan lagi. Overlay Image Cara yang lebih mudah untuk menampilkan image adalah dengan memanfaatkan image yang sudah ada lalu di-overlay (ditumpuk) dengan teks dinamik yang diinginkan. Dengan cara ini penampilan, aspek seni, dan kualitas image bisa lebih baik, karena dibuat dengan program aplikasi grafis, mengingat keterbatasan kemampuan PHP dalam membuat image.
Untuk membuat image secara overlay, digunakan function imagecreatefrompng() untuk memanggil file image asli, dalam contoh menggunakan format PNG, untuk format lain, tersedia function sejenis yang relevan
45
Membuat Dokumen PDF Biasanya pembaca/pengguna web membutuhkan dokumen web yang sifatnya printerfriendly atau siap cetak, dan biasanya dokumen yang siap ceta k disajikan dalam format PDF. PHP dapat menghasilkan dokumen berformat PDF dengna dukungan library eksternal yang sudah cukup banyak dikembangkan oleh banyak pihak. Manual PHP sendiri merekomendasikan dan merujuk pada modul PdfLib yang bisa di download dari http://www.pdflib.com/en/download/ , hanya saja penggunaan modul PdfLib untuk keperluan komersial atau bisnis diharuskan untuk memiliki lisensi dari pembuatnya. Library PDF yang juga cukup populer dan bisa digunakan se cara cuma-cuma serta tidak kalah mudah dalam penggunaannya adalah ezPdf yang bisa di download dari http://www.ros.co.nz/pdf/. Dalam contoh pembahasan ini digunakan ezPdf , yang dibuat dengan object oriented programming pada PHP, dan ezPdf didistribusikan dalam bentuk class yang siap pakai ezSetCmMargins( 2, 1.5, 1, 1 ); $pdf->selectFont('../fonts/Helvetica.afm'); $all = $pdf->openObject(); $pdf->saveState(); $pdf->setStrokeColor(0,0,0,1); //membuat header dan footer $pdf->addText(250, 822, 6, 'belajar php'); $pdf->line(10, 40, 578, 40); $pdf->line(10, 818, 578, 818); $pdf->addText(30, 34, 6, 'generated: '.date("j F, Y, H:i")); $pdf->restoreState(); $pdf->closeObject(); $pdf->addObject($all, 'all'); $pdf->ezSetDy(30); //teks judul, font 14 $pdf->ezText($data[‘judul’], 14); //teks isi, font 10 $pdf->ezText('$data[‘isi’], 10); //set nomor halaman $pdf->ezStartPageNumbers(550, 34, 6, '', '', 1); $pdf->ezStopPageNumbers(1,1);
46
//finishing dokumen $pdf->ezStream(); ?>
Koleksi function dari masing-masing PDF library berbeda-beda, tetapi biasanya developer dari masing-masing library sudah menyediakan tutorial untuk penggunaan library mereka
47
10 Asynchronous Java Script
Pengantar AJAX AJAX singkatan dari Asynchronous JavaScript And XML. AJAX bukanlah sebuah bahasa pemrograman baru, tetapi meru pakan teknik pemrograman pada JavaScript yang memungkinkan program client-side yang dibuat dengan JavaScript dapat berkomunikasi langsung dengan server dan meningkatkan performance dari presentasi/aplikasi web. AJAX memanfaatkan obyek XMLHttpRequest pada JavaScript yang memungkinkan terjadinya komunikasi asynchronous antara client dengan server, dan memungkinkan perubahan isi sebagian (parsial) dari halaman web tanpa harus me-reload seluruhnya Komunikasi Asinkron Pada prinsipnya, web adalah komunikasi data client-server yang bekerja berdasarkan request dan respon antara client dan server. Komunikasi terjadi saat client melakukan request lalu menunggu respon dari server, dan berakhir setelah semua informasi yang menjadi respon dari server diterima oleh client. Proses komunikasi ini selalu melibatkan pengguna untuk memulai satu sesi request-respon, misalnya dengan klik icon link atau klik pada tombol submit form, dan disebu sebagai komunikasi sinkron antara client dan server. Pada komunikasi asinkron, dimungki nkan terjadinya request oleh browser di saat satu sesi komunikasi sedang berlangsung tanpa harus menunggu sampai proses sebelumnya selesai. Proses request terjadi di latar belakang, dan di picu oleh event atau prosedur tertentu, tanpa harus melibatkan peng guna secara langsung. AJAX dengan obyek XMLHttpRequest memungkinkan terjadinya request asinkron. Dengan demikian dapat dihasilkan program yuang berjalan di sisi client yang seolah-olah sangat dinamis dan sangat interaktif antara client dan server. XMLHttpRequest XMLHttpRequest adalah sebuah class obyek dalam JavaScript yang berfungsi untuk mengirimkan request dari browser ke server dan menerima hasil (respon) dari server. Pada browser Microsoft Internet Explorer, digunakan class obyek ActiveXObject(“Msxml2.XMLHTTP”) atau ActiveXObject(“Microsoft.XMLHTTP”) ,
48
karena itu, untuk menggunakan AJAX, script program harus dibuat sedemikian rupa agar bisa mengenali browser pengguna dan menggunakan obyek yang sesuai <script type="text/javascript"> function ajaxFuncti on() { var xmlHttp; // cek browser try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { alert("Your browser does not support AJAX!"); return false; } } } } ... ... }
Request dikirimkan dengan menggunakan method open dan send untuk memanggil program pada server-side xmlHttp.open("GET", "namaprogram.php?p=parameter",true); xmlHttp.send(null);
49
Untuk dapat menangkap respon dari server, digunakan properti readyState yang akan memberi informasi status dari request, dan berdasarkan status tersebut, dijalankan function yang akan memproses respon dari server xmlHttp.onreadystatechange=function() { if(xmlHttp.readyState==4) { // .. pemrosesan data dari respon server di sini.. } }
Status dari properti readyState adalah: Status Keterangan 0 Request tidak/belum diinisialisasi 1 Request telah di set-up 2 Request telah di kirim 3 Request dalam proses 4 Request selesai
Output Untuk memungkinkan perubahan isi sebagian halaman web tanpa harus me-reload seluruh halaman, output dari AJAX biasanya diarahkan ke tag
..
Contoh output AJAX ke halaman web function stateChanged() { if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { document.getElementById("tampil").innerHTML=xmlHttp.responseText; } }
Tag HTML yang akan menerima dan menampilkan output dari AJAX
50
AJAX – PHP Pada prinsipnya, semua bahasa pemrograman web pada server-side dapat berkomunikasi dengan ajax, cukup dengan memasukkan nama file scriptnya sebagai parameter pada method xmlHttp.open() , demikian pula halnya dengan PHP Contoh halaman web sederhana dengan AJAX dan PHP <script type="text/jav ascript"> function ajaxFunction() { var xmlHttp; try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { alert("Your browser does not support AJAX!"); return false; } } } xmlHttp.onreadystatechange=function() { if(xmlHttp.readyState==4 ) { document.myForm.time.value=xmlHttp.responseText; } } xmlHttp.open("GET","time.php",true); xmlHttp.send(null); }
File time.php
Simpel bukan..?? Untuk lebih memudahkan penulisan program. Khususnya bagi mereka yang fanatik dengan satu bahasa saja misalnya PHP, telah banyak dikemb angkan PHP framework untuk AJAX, dimana sejumlah fungsi -fungsi penting atau yang banyak dipakai telah tersedia dalam bentuk function hingga class object, dan programmer cukup menuliskan kode-kode dan pemanggilan function dalam bahasa pemrograman PHP, bahkan ada diantaranya yang menawarkan penggunaan AJAX dari PHP tanpa harus menyentuh bagian JavaScript-nya sama sekali. Informasi tentang berbagai framework AJAX-PHP dapat dibaca di sini: http://ajaxpatterns.org/PHP_Ajax_Frameworks