1 11 Membangun Website Dinamis dengan ColdFusion ColdFusion Dalam artikel ini kita akan membahas apa itu ColdFusion dan kemampuannya untuk menciptakan...
Membangun Website Dinamis dengan ColdFusion ColdFusion Dalam artikel ini kita akan membahas apa itu ColdFusion dan kemampuannya untuk menciptakan website dinamis. ColdFusion adalah bahasa pemrograman yang berdasar pada standar dasar HTML (Hyper Text Meta Language) yang digunakan untuk
menulis
webpage
dinamis.
ColdFusion
akan
membuat
halaman yang isinya tergantung dari user input, database, waktu atau apapun kriteria yang diimpikan! Halaman ColdFusion pages akan terdiri dari standard HTML tags seperti bersama dengan CFML (ColdFusion Meta Language) tags seperti ,
and
.
ColdFusion
mulai
diperkenalkan oleh Allaire in 1996 dan sekarang sudah mencapai versi 5.0. Program Hello World dalam ColdFusion Saat seorang user meminta sebuah halaman ColdFusion page (biasanya file dengan extension .CFM) dari webserver, ColdFusion Server akan menjalankan halaman dan mengeluarkan halaman standard HTML ke webserver untuk dikembalikan ke browser user. Dalam kasus simpel dimana hanya ada HTML tags dan tidak ada CFML tags dalam halaman, tidak ada proses yang dilakukan, dan HTML hanya melewatinya tanpa diubah. Jadi jika anda ingin menulis program
"Hello
melibatkan HTML saja: Hello World
World"
dalam
ColdFusion,
ini
hanya
12
HelloWorld.cfm Jika
ada
CFML
tags
maka
ColdFusion
akan
memprosesnya,
mengkalkulasi variabel, pernyataan if, dan looping, untuk kemudian di buat HTML. Jika anda familiar dengan C, maka anda bisa bandingkan dengan C preprocessor for HTML! Mari kita tambahkan beberapa ColdFusion code ke dalam contoh Hello World kita. Kita akan menanyakan nama si user dan kemudian menampilkan Hello [nama]. Dalam standard HTML web page, kita harus memasukkan nama user dalam halamam terpisah adri halaman yang akan memprosesnya. Hal ini dikarenakan setelah
sebuah
halam
ditampilkan
dalam
browser,
maka
komunikasi antara browser dengan server akan berhenti, jadi agar server
dapat
melakukan
proses
dibutuhkan
halaman
kedua.
(Catatan: Dapat juga dilakukan untuk menjalan code dalam browse, tetapi ini akan membutuhkan JavaScript atau client-side addons lainnya ke HTML, dimana kita tidak menginginkannya.) Catatan: Kenyataannya webpage berdiri sendiri (terpisah dari server) dan ini menjadi satu dari banyak hal yang membingungkan dari penulisan aplikasi web. Kadang-kadang dijelaskan sebagai stateless dan setiap halaman tidak secara otomatis minyimpan dalam memori atau status dari halaman sebelumnya sampai kode anda secara jelas menyampaikan informasi yang ada. Bandingkan situasi ini dengan sebuah pemrograman tradisional dalam Basic atau C, dimana kita dapat secara mudah memindahkan variabel global atau parameter dalam program kita. Kita
tambahkan
sebuah
halaman
baru
GetName.cfm
untuk
mengambil nama user dan mengubah halaman tampilan menjadi HelloWorld2.cfm, seperti di bawah ini.
13
GetName.cfm
Hello #FirstName# HelloWorld2.cfm Halaman pertama GetName.cfm adalah sebuah HTML murni untuk tampilan input. Halaman kedua HelloWorld2.cfm mengandung dua perintah ColdFusion - tag untuk menyalakan output ColdFusion variable(yang akan berpasangan dengan tag untuk mematikannya). Dan tanda pagar (#) sebagai pemisah variabel FirstName yang disampaikan sebagai variabel form dari halaman
GetName.cfm.
mengetikkan
nama
Saat
Michael
halaman ke
dijalankan
halaman
dan
pertama,
anda
hasilnya
kemudian dapat kita lihat "Hello Michael" dan HTML berikut akan di generate: Hello Michael
14
Mari kita lakukan latihan terakhir dari contoh ini, yang akan mengatakan Selamat Pagi, Siang atau Malam tergantung waktu yang berlaku di server. Kita akan menggunakan fungsi ColdFusion Now()
dan
Hour()
yang
akan
mengembalikan
(date/time) dan jam akan berada diantara
tanggal/jam
0 dan 23 dari nilai
tanggal/jam. Selamat Malam Selamat Siang Selamat Pagi #FirstName# HelloWorld3.cfm Disini juga digunakan tags yang akan menampilkan hasil yang berbeda-beda tergantung dari jam hari tersebut - apapun kondisinya. Harap diperhatikan karena kita menggunakan
HTML,
carriage
return
dalam
text
tidak akan
berpengaruh dan salam "Selamat Pagi Michael" akan muncul dalam satu baris. Jika diinginkan dalam dua baris, kita harus gunakan standar linebreak HTML tag sebelum variabel #FirstName#. ColdFusion memiliki lebih dari seratus fungsi
Arrays, Date and
Time, Decisions, Display and Formatting, Dynamic Evaluation, List
15
Processing, Structures, International, Mathematics, Strings, System values and Query manipulation. Juga ada sekitar 70 tags untuk Database Manipulation, Data Output, Variable Manipulation, FlowControl, Internet Protocols, File Management, Web Application Framework, ColdFusion Forms, External System Tags. Sebagai tambahan kita dapat menulis sendiri tag baru dalam ColdFusion or C. Bagaimana ColdFusion Bekerja Untuk
menyimpulkannya,
sebuah
aplikasi
ColdFusion
adalah
kumpulan-kumpulan halaman yang sangat sederhana yang mirip dengan sebuah static Web site. Tetapi tidak seperti website static, Halaman
dalam
aplikasi
ColdFusion
mengandung
server-side
ColdFusion Markup Language (CFML) sebagai tambahan ke HTML. CFML
akan
memberikan
keleluasaan
untuk
mengendalikan
kebutuhan dari aplikasi kita, mengintegrasikan dengan teknologi server
dan
secara
dinamis
meng-generate
content
yang
dikembalikan ke browser. Saat sebuah browser meminta sebuah halaman dalam aplikasi ColdFusion, secara otomatis akan di proses terlebih dahulu oleh ColdFusion Application Server. Berdasarkan pada CFML dalam halaman tersebut, Application Server mengeksekusi logika aplikasi, berinteraksi dengan teknologi server lainnya dan secara dinamis men-generate
sebuah halaman HTML,
yang dikembalikan ke
browser. Diagram berikut menampilkan bagaimana sebuah browser meminta halaman di aplikasi ColdFusion.
16
1. Saat user meminta halaman dalam aplikasi ColdFusion dengan submit sebuah form atau klik hyperlink, browser si suer mengirimkan sebuah request HTTP ke Web server melalui Internet atau Intranet. 2. Web server menyampaikan data yang dimasukkan oleh client dan meminta halaman ke server aplikasi ColdFusion melalui server API atau CGI. Halaman ColdFusion secara otomatis dikompile dan disimpan dalam memory sehingga pemrosesan menjadi sangat cepat dan dapat dikembangkan walaupun dalam beban tinggi. 3. ColdFusion membaca data dari client dan memroses CFML yang digunakan dalam halaman tersebut. Berdasarkan CFML, server aplikasi ColdFusion menjalankan logika aplikasi dan berinteraksi
dengan
seluruh
teknologi
server,
termasuk
database, email dan files. 4. ColdFusion secara dinamis men-generate sebuah halaman HTML dan mengembalikan ke web server. 5. Web server kemudian menyampaikan halaman tersebut ke browser si User. Apalagi yang dapat dilakukan oleh ColdFusion? Kita tidak hanya bisa mengolah variabel dan kondisi CFIF. Beberapa yang dapat dilakukan adalah: •
Mengambil data dari sebarang
ODBC database termasuk
Access dan SQL server •
Menjalankan seluruh SQL query termasuk INSERT, UPDATE and DELETE queries
•
Mengirim email dengan CFMAIL
•
Looping dalam query database, list atau For-Next.
•
Menangani error dan mengalihkan ke halaman yang berbeda.
17
•
Secara otomatis membaca halaman dari website lain dengan CFHTTP
Apa yang dibuat oleh web developer dengan ColdFusion? Web
developer
menggunakan
ColdFusion
untuk
membangun
aplikasi-aplikasi Internet, Intranet, and Extranet termasuk: Electronic Commerce •
Online stores and catalogs
•
Supply chain management
•
Business to business electronic commerce
•
One to one marketing and Web site personalization
Collaborative Computing •
Online discussion groups
•
Project management
•
Groupware systems
•
Workflow applications
•
Web based support
Interactive Publishing •
Online information services
•
Agent technology
•
Dynamic Web publications
•
Internal corporate newsletters
•
Interactive training
18
Business Systems •
HR applications
•
Sales/order entry
•
Business process automation
•
Company directory
•
Financial information applications
•
Customer asset management
Menampilkan data dengan SQL Kita akan teruskan membahas apa yang dapat dilakukan oleh ColdFusion dan bagaimana kita dapat menggunakannya untuk membuat website. Disini akan dibahas mengenai penampilan data dari database dengan menggunakan SQL statement.
Membuat halaman data dengan Select dan Display Data Untuk select dan menampilkan data dari sebuah database, kita buat sebuah aplikasi ColdFusion dengan menggunakan tag CFQUERY, ditambah sedikit HTML format seperti yang kita inginkan. Query database dilakukan dengan SQL (Structured Query Language) di dalam tag CFQUERY. Untuk menggambarkannya, kita akan menggunakan contoh sebuah database
dengan
menggunakan
ODBC
(Open
Connectivity) serta DSN-nya kita namakan CompanyDB.
DataBase
19
Untuk
membuat
sebuah
query
select
yang
diberi
nama
EmployeeList, yang akan mengambil semua data dalam tabel employees, kita gunakan syntax dibawah ini: SELECT FirstName, LastName, PhoneNumber, Email FROM Employees ORDER BY LastName EmployeeList.cfm
SQL dan ODBC SQL adalah bahasa industri standar untuk berinteraksi dengan database relational. Dengan kelebihan-kelebihan SQL yang cukup hebat, ternyata mempelajari dasar SQL relatif lebih mudah. Kita dapat mempelajari SQL yang kita butuhkan untuk digunakan dalam ColdFusion. Pernyataan SQL dasar adalah:
Action
SQL syntax
Read
SELECT FieldsList FROM TableName WHERE conditions
records
ORDER BY FieldsList
Add records INSERT INTO TableName (FieldsList) VALUES (ValuesList)
20
Delete
DELETE * FROM TableName WHERE conditions
records Change
UPDATE TableName SET field = value WHERE
records
condition
Dalam praktek, mungkin kita akan jarang menulis statement-SQL karena begitu banyak tools untuk membuat ini. Yang paling mudah, kiita akan dapatkan SQL tools dalam Microsoft Acces. Tools ini akan membuat kita secara visual membuat query serta dapat kita lihat terlebih dahulu hasilnya. Kemudian dengan mudah kita copy-paste SQL statement ini ke aplikasi lainnya seperti ColdFusion. Ini akan membantu anda terlepas dari error message ODBC serta SQL syntax error. Selain itu, ODBC adalah salah satu cara untuk program seperti ColdFusion untuk menggunakan SQL yang sama dengan database yang berbeda tanpa harus mengubah kode. ODBC driver akan menangani semua detail dengan database sesungguhnya dan kita akan lebih bebas untuk memikirkan hal lain dalam aplikasi kita. ODBC drivers terdapat dari beberapa database: •
Access SQL server
•
Excel
•
Comma delimited text
•
HTML tables
•
FoxPro
•
Paradox
•
Oracle
•
Sybase
•
DB2
21
Menampilkan Hasil dari SELECT Setelah kita membuat CFQUERY dalam aplikasi kita, kita dapat menghubungkannya dengan tag CFML lainnya. Hasil query dapat kita gunakan untuk secara dinamis menampilkan sebuah halaman HTML. Selama kita belajar CFML tags, harus diingat bahwa kita dapat juga menggunakan tag HTML serta text dalam aplikasi kita. Saat kita gunakan tag HTML and text dalam aplikasi kita, ColdFusion hanya akan melewatkannya saja untuk dikembalikan ke browser client. Cara paling fleksibel untuk meampilkan data yang diambil dari sebuah CFQUERY adalah mendefinisikan sebuah bagian CFML output dalam aplikasi kita dengan menggunakan CFOUTPUT tag. Bagian ini kita isi dengan query tertentu atau dengan beberapa query. Bagian output dasar biasanya memiliki syntax sebagai berikut: Text biasa, HTML tags, dan dynamic field reference (contoh: #FirstName#) Catatan: penggunaan tanda pound (#) untuk mengeluarkan nilai variable 'FirstName'. Sebuah CFOUTPUT tag dapat berisi: •
Text biasa
•
HTML tag
22
•
Reference ke query columns
•
Reference ke parameter dinamis seperti field form.
•
Function
Contoh: Jika kita jalankan CFQUERY yang kita beri nama EmployeeList dan kita ingin menggunakannya untuk menampilkan first name, last name, dan email address dari setiap pegawai (setiap baris dipisah oleh garis horisontal), kita gunakan bagian CFOUTPUT sebagai berikut: #FirstName# #LastName# (Email: #Email#) EmployeeList2.cfm Jika ada 3 record dari hasil query tersebut, HTML yang di generate oleh
EmployeeList3.cfm Hasilnya adalah sebuah tabel dengan tiga kolom dengan label "FirstName," "Last Name" dan "Email”. Tabel ini akan menampilkan data dari CFQUERY yang bernama "EmployeeList" dan ditambalikan tidak lebih dari 10 baris.
First Name
Last Name
Email
John
Smith
...
Dalam browser kita, akan kita lihat seperti ini:
First Name Last Name
Email
Deborah
[email protected]
Jones
25
John
Smith
[email protected]
Frank
Wilson
[email protected]
Menggunakan Parameter Dinamis dalam SQL Statement Kita baru dapat merasakan manfaat kekuatan sebenarnya dari CFQUERY tag pada saat kita secara dinamis menyesuaikan isi dari attribut SQL dengan menggunakan parameter yang disampaikan oleh aplikasi. SQL statement dapat disesuaikan dengan menambahkan parameter dinamis dalam SQL text. Parameter dinamis (disebut juga variabel) biasanya terdapat dalam entry form, parameter melalui URL dan informasi CGI environtment. Konvensi penggunaan parameter dinamis dalam statement SQL adalah menutup variable tersebut tanda pound atau (contoh., #:LastName#). Saat ColdFusion memeriksa ada text di antara tanda #, maka akan dicari di semua variabel Form, URL, cookies, client, and CGI utnuk mencari yang sesuai dengan nama yang dimasukkan. Pada saat nama diketemukan, maka ColdFusion menggantikannya dengan nilai variabel tersebut. Jika kita memastikan variabel dengan type variabelnya, maka waktu pencariannya akan lebih cepat sedikit. Contoh SQL Dinamis Jika kita membuat sebuah form agar user dapat mencari employees berdasarkan nama belakangnya, maka kita dapat menggunakan statement SQK dengan parameter dinamis:
26
SELECT * FROM Employees WHERE LastName = '#Form.LastName#' Jika kita masukkan "Rucker" untuk LastName, statement SQL yang dikirim ke database akan seperti: SELECT * FROM Employees WHERE LastName = 'Rucker'
Sources for dynamic parameters Dibawah ini tabel variabel CF, yang juga bisa kita gunakan dalam SQL query. Type Variabel dalam CF
Field
Description
Form fields
Cara yang paling sering digunakan untuk menyampaikan parameter ke aplikasi web. Saat user memasukkan data ke form field, sebuah parameter dengan nama variabel dalam form tersebut (#Form.formfield#) akan disampaikan ke aplikasi.
URL
Parameter yang ditambahkan pada akhir URL
parameters
(seperti, input.cfm?name=adam). Nama variabelnya adalah "url.name"
27
Server
Sebuah variable yang akan tetap ada ke semua aplikasi yang ada di server sampai ColdFusion Server berhenti/mati.
CGI
Sebuah variabel environment yang diterjemahkan
environment
oleh browser. Setiap request yang disampaikan ke aplikasi mempunyai beberapa variabel environment yang berhubungan dengan context yang dikirimkan. Variabel tersebut tersedia tergantung dari browser dan software server yang digunakan untuk memngirimkan request.
Query objects Kolom query hanya dapat kita gunakan setelah sebuah query tersebut dijalankan. Hasil dari query ini dapat digunakan sebagai parameter dinamis bagi query lainnya. Contoh, sebuah query menghasilkan kolom yang disebut UserID dan dapat menjadi variabel untuk queryname.UserID Cookies
Mekanisme umum untuk menyimpan dan mengambil informasi di web client (browser).
Client
Digunakan untuk menyimpan variabel client di
variables
dalam sistem. Di register dalam server web. Variabel ini sangat spesifik ke browser individual yang mengakses aplikasi ColdFusion.
Session
Variable yang hanya ada pada saat sessi individual.
variables
Variabel session terikat ke klien individual dan akan tetap ada selama client ID tersebut masih ada dalam sessi.
28
Application
Variable yang hanya ada untuk aplikasi individual.
variables
Nama aplikasi didefinisikan dalam CFAPPLICATION tag, dimana biasa digunakan dalam file application.cfm.
Email Dinamis Kita teruskan membahas bagaimana ColdFusion bekerja. Kita akan bahas pengiriman email dan bagaimana kita gunakan dalam pembuatan web site dinamis.
CFMAIL Tag bertugas mengirimkan email ke satu atau banyak tujuan dari sebuah halaman web. Menggunakan standar SMTP (Simple Mail Transport Protocol) server seperti MS Exchange atau SLmail. mempunyai parameter dikirimkan kepada siapa memakai TO, pengirim memakai FROM, sebuah CC dan SUBJECT. Isi email itu sendiri diantara dalam
dan
tags. Agar lebih jelas, kita akan membuat sebuah inquiry dari pelanggan sebelum kita simpan dalam database.
Mengirimkan email berbasis form
29
Pelanggan memasukkan namanya, email, suject dari inquiry serta pesan dalam input form ini: Request more information. Halaman output kita gunakan untuk mengirimkan email ke bagian marketing
dengan
mengirimkan
CC
menggunakan ke
customer
konfirmasi dari
tag
kita,
. sehingga
Kita
mereka
permintaan
The following inquiry was posted to our Web site: Name: #Form.FirstName# #Form.LastName# Subject: #Form.Subject#
juga dapat
mereka.
30
#Form.InquiryText# Pada halaman yang sama kita juga menyimpannya dalam database dengan menggunakan tag sebagai berikut. INSERT INTO Leads (FirstName, LastName, Email, Subject, InquiryText, LeadDate) VALUES('#Form.FirstName#','#Form.LastName#', '#Form.EmailAddress#', '#Form.Subject#', '#Form.InquiryText#', #CreateODBCDate(now())#)
Membuat mail merge dengan email Program diatas hangay mengirimkan satu email. Bagaimana jika kita ingin mengirimkan email follow-up yang ada dalam database di tabel "Leads" adalah
7 hari lalu sampai sekarang? Langkah pertama
menulis
sebuah
query
SQL
dan
menggunakan
: SELECT FirstName, LastName, Email FROM Leads WHERE int(LeadDate) = int(now())-7
tag
31
Kita gunakan fungsi int() dalam SQL karena field LeadDate dibuat dengan fungsi now() yang memasukkan waktu (kita hanya ingin membandingkan
tanggalnya
saja).
Fungsi
int()
hanya
akan
mengambil bagian integer dari tanggal dan menghilangkan bagian di belakang koma, sehingga kita dapat membandingkan harinya. Kemudian kita looping hasil query GetEmail di atas dengan menggunakan tag tag. Tag ini akan membuat looping dari setiap hasil yang didapatkan dari query tersebut. Dan dari setiap loop kita menyisipkan tag utnuk mengirimkan email ke masing-masing pelanggan hasil query ini: Dear #FirstName#, Here are this month's programming tips
32
Di atas kita juga menyimpan daftar pengiriman email ke dalam variabel ListSent. Kita menambahkan nama dan email ke dalam variabel
menggunakan
tag
.
Sepasang carriage
return/linefeed pair (ASCII character 13 and 10) ditambahkan agar terpisah barisnya dalam output. Dengan demikian, setelah looping selesai, kita kirimkan email yang berisi daftar email yang terkirim dengan menggunakan tag : Sending followup email on #dateformat(now())# Name
Email
#listsent# Mengapa kita harus mengirimkan email yang terakhir ini? Jika kita akan menggunakan jadwal untuk menjalankan program diatas dengan schedule tertentu dengan menggunakan , maka kita tidak dapat mengamati langsung proses yang terjadi. Jadi cara satu-satunya adalah dengan mengirimkan email seperti pada program terakhir di atas. Dengan demikian kita dapat mengikuti perkembangan, tanpa harus mengecek database. Saya biasanya menggunakan CFMAIL yang tersembunyi untuk mengirimkan error. Bagaimana kita tahu bahwa program kita tidak berjalan tanpa ada yang memberitahu? Dengan error handling ditambah CFMAIL kita dapat mengetahuinya!
33
Note: mempunyai sebuah parameter QUERY parameter yang memungkinkan untuk mengirimkan email ke setiap record dalam sebuah query, akan tetapi saya memilih metoda CFLOOP diatas agar lebih mudah untuk dirubah dan dikendalikan.
Protokol Internet Lainnya Sebagai tambahan pengiriman email ColdFusion, dibawah ini adalah beberapa
standard
internet
protokol.
Termasuk
diantaranya
penerimaan email menggunakan POP, mengambil data dari web serta pencarian direktori. Dibawah ini ringkasannya. Mengirim E-mail (SMTP)
Secara
dinamis
informasi statis, form input atau hasil
mengirimkan
membuat
email.
serta
Menggunakan
query untuk mengendalikan alamat dan isi email. Pengiriman beratus-ratus email yang
dicustom
pengiriman.
dalam
Memudahkan
satu
kali
pembuatan
email HTM untuk aplikasi groupware dan workflow. Mengambil E-mail
Mengambil email dari server POP dan menggabungkannya
dengan
aplikasi
ColdFusion. Memungkin interface aplikasi e-mail
berbasis
web,
otomatisasi
pengambilan dan penyebarluasan email
34
dan aplikasi email yang pintar, seperti auto responder dan 'listserv'. Mendukung semua server POP, meninggalkan email tetap dalam server, mengambil emailemail
tertentu,
menghapus
dan
attachment. Mengambil Halaman Web
Interface ke Web server menggunakan
membuat bentuk
HTTP.
Membuat
query
distribusi
dan
tertentu
dengan aplikasi. Mendukung HTTP GET and POST, termasuk
file attachment,
dan membuat 'recordsets' dari hasilnya. Juga mendukung standard Web server authentication dan SSL encryption. Direktori
Interface dengan server direktori yang mendukung Lightweight Directory Access Protocol
(LDAP)
seperti
Netscape's
Directory Server, Microsoft's Exchange Server, Windows NT directory, Novell NDS
directories,
lusinan
Banyan
Internet-based
Vines,
dan
lainnya.
Mendukung search, add, update, delete, authenticated access, etc.
Kesimpulan
35
CFMAIL memudahkan kita untuk mengirimkan email ke satu atau banyak tujuan dan dapat digabungkan dengan program query mail merge. LOOP DAN LIST What is ColdFusion Dalam artikel ini kita lanjutkan membahas apa ColdFusion dan bagaimana kita gunakan untuk membangun website yang dinamis. Kita akan membahas berbagai jenis loop dan kemudahan dalam penanganan list.
Looping in ColdFusion Looping adalah teknik yang paling sering digunakan dalam teknik pemrograman
untuk
menampilkan
output
mengulang
sekumpulan
berulang-ulang
sampai
instruksi
atau
kondisi
yang
diinginkan tercapai. ColdFusion mengimplementasi looping dengan perintah tag. Lima jenis looping yang disediakan: •
Index Loops
•
Conditional Loops
•
Looping over a Query
•
Looping over a List
•
Looping over a COM Collection or Structure
Jenis loop akan ditentukan dari cara pemakaian attribute dalam tag seperti yang diterangkan di bawah ini. Index loops
36
Sebuah index loop akan melakukan pengulangan yang ditentukan oleh range dari nilai numerik. Index loops dikenal sebagai looping FOR, seperti "loop FOR untuk rentang nilai berikut ini."
Syntax
umumnya sebagai berikut: HTML or CFML code to repeat Sebagai contoh jika kita akan membuah list box untuk dua buah field form jam dan menit (dari 0 sampai 23 dan 0 sampai 59(, kita akan dua tag CFLOOP sebagai berikut: <SELECT NAME="Hour"> : <SELECT NAME="Minute">
37
Script diatas akan menghasilkan dua list box berdampingan, yang pertama denga 24 item dan yang lainnya 60 item. Jika kita inginkan hanya satu list box denga jam dan menit bersamaan (ada 1440 item), kita lakukan nested pada looping kita sebagai berikut: <SELECT NAME="HourAndMinutes"> Kita memasukan tanda ' dalam nilainya, karena kita inginkan nilai yang diberikan dalam bentuk string seperti '12:25'. Kita juga mengabaikan paramaeter STEP, karena nilai defaultnya adalah satu. Jika anda mencoba untuk menggunakan kode di atas ini, bersiaplah untuk menunggu sebentar karean ada lebih dari seribu item dan ini sama sekali tidak user friendly dan mungkin memakan waktu untuk menampilkannya bahakan crash dalam browser versi lama! Conditional Loops Conditional loop akan mengulang satu set instruksi sapai kondisi TRUE diberikan.
Jumlah
pengulangan mungkin
tidak
dapat
diketahui dengan pasti pada saat penulisan kode, dan hal ini sangat berbeda dengan index loop. Jika untuk menghindari pengulangan tak terhingga, anda harus mengubah kondisi agar kondisi yang
38
dievaluasi tidak selalu FALSE. Conditional loops dikenal sebagai WHILE loops, sebagai “loop WHILE kondisi ini benar/true.” Kita ambil contoh untuk menampilkan angka random. Salah satu cara adalah dengan loop sampai angka random lebih besar dari angka yang diberikan. Jika
diinginkan
keluar
dari
loop,
dapat
digunakan
perintah
Looping dari sebuah Query Sebuah loop query akan mengulang untuk setiap record dari record set hasil query. Hasil CFLOOP seperti hasil dari CFOUTPUT. Selama iterasi dari loop, kolom akan tersedia untuk dikeluarkan. Mengapa kita harus menggunakan CFLOOP dibanding CFOUTPUT? Kelebihan looping query adalah tag tidak dapat diperbolahkan untuk digunakan dalam sebuah tag sebelumnya. Sebagai contoh, kita iterasi alamat email dan untuk setiap email tersebut kita kirim pesan. SELECT Email , SecurityLevel FROM Customer
39
SELECT EmailText, EmailSubject FROM Messages WHERE
SecurityLevel = #GetEmail.SecurityLevel#
#GetText.EmailText# Dalam contoh ini kita melakukan pengulangan terhadap email address customer dan subyek serta isi email tergantung dari tingkat security yang dimilikinya. jika kita ganti CFLOOP dengan CFOUTPUT, maka coldfusion akan menghasilkan error. Looping terhadap sebuah List Looping terhadap sebuah list akan menjalankan pengulangan sebuah list yang biasanya dipisah oleh tanda koma. Dalam sebuah list loop, attribute INDEX menspesifikasi nama sebuah variabel yang akan menerima nilai dan attribute LIST akan berisi sebuah list. Kapan list akan digunakan? Biasanya adalah multi-select list box atau check boxes dari halaman sebelumnya. Dalam contoh kita generate sebuah list dari keadaan dari sebuah tabel dalam database.
40
SELECT State_ID, StateName FROM States Saat form ini di submit, form ini akan menyampaikan kondisi dari State_ID tyang terpilih dalam sebuah comma delimited list. Untuk mengambil keadaan ini dalam halaman beriktunya kit proses list sebagai berikut:
The following states were selected
#ListElement#
ColdFusion List functions
41
ColdFusion mempunya support yang handal untuk menangani list ini. Dibawah ini fungsi list yang tersedia.
ListAppend
Mengembalikan
list
dengan
menambahkan sebuah nilai di akhir elemen. ListPrepend
Mengembalikan menyisipkan awal
serta
list
sebuah
dengan nilai
menggese
di
semua
elemen ke kanan. ListInsertAt
Mengembalikan list dengan nilai disisipkan
pada
posisi
yang
ditentukan. ListSetAt
Mengembalikan
list
dengan
memberikan nilai pada sebuah elemen di posisi tertentu. ListGetAt
Mengembalikan
nilai
elemen
pada posisi yang ditentukan. ListFirst
Mengembalikan
nilai
elemen
nilai
elemen
pertama dari list. ListLast
Mengembalikan terakhir dari list.
42
ListRest
Mengembalikan
list
elemen
tanpa pertama.
Mengembalikan list kosong jika list tersebut hanya memiliki satu elemen. ListDeleteAt
Mengembalikan menghapus
list
dengan
terlebih
dahulu
elemen pada posisi tertentu. ListFind
Mengembalikan
index
dari
temuan pertama dalam sebuah list. Mengembalikan 0 jika tidak ditemukan.
Search
ini
case-
index
dari
sensitive. ListFindNoCase
Mengembalikan
temuan pertama dalam sebuah list. Mengembalikan 0 hika tidak ditemukan.
Search
ini
tidak
case-sensitive. ListContains
Mengembalikan index dari elemen pertama yang mengandung substring yang ditentukan dalam elemen. Search ini case-sensitive. Jika ditemukan, mengembalikan 0.
ListContainsNoCase
Mengembalikan index dari
43
elemen pertama yang mengandung substring yang ditentukan dalam elemen. Search ini tidak case-sensitive. Jika ditemukan, mengembalikan 0. ListChangeDelims
Mengembalikan list dengan delimiter diubah menjadi delimiter baru.
ListToArray
Mengubah list tertentu, dengan delimiter yang ditentukan, menjadi sebuah array.
ArrayToList
Mengubah array satu dimensi, menjadi list dengan delimiter yang ditentukan.
ReplaceList
Mengembalikan string dengan mengganti semua elemen yang ditemukan dengan elemen lain yang berhubungan. Search ini case sensitive.
ListLen
Mengembalikan jumlah elemen dalam sebuah list.
QuotedValueList
Mengembalikan list dengan delimiter koma dari nilai yang
44
sebelumnya dieksekusi dari query. Setiap nilai akan ditutup dengan tanda kutip. ValueList
Mengembalikan list dengan delimiter koma dari setiap nilai yang dikembalikan oleh query terdahulu.
GetClientVariablesList Mengembalikan list dengan delimiter koma dari variabel client non-readonly sehingga siap untuk sebuah template. SELECT * FROM Customer WHERE #PreserveSingleQuotes(extraSQL)# Jika keadaan yang dipilih adalah MD, VA dan DC maka kode di atas akan mengenerate HTML berikut:
The following states were selected
MD VA DC Dan query statement-nya akan menjadi:
45
SELECT * FROM Customer WHERE FALSE OR State_ID = ‘MD’ OR State_ID = ‘VA’ OR State_ID = ‘DC’ Harap diperhatikan bahwa kita menggunakan nilai awal FALSE untuk variabel extraSQL variable sehingga kode di atas akan tetap bekerja walaupun listnya kosong atau berisi. Tanda kutip satu diperlukan untuk mencegah penggandaan dari tanda tersebut. Walaupun CFLOOP pada dasarnya menggunakan elemen tanda koma sebagai default, kita dapat bebas merubah tanda separasi dengan mengisi nya pada attribut DELIMITER. Bahkan kita dapat menggunakannya beberapa tanda pemisah sekaligus. Sebenarnya kita juga dapat menggunakan hal yang lebih mudah, yaitu memanfaat perintah SQL IN. SELECT * FROM Customer WHERE State_ID IN (#PreserveSingleQuotes(Form.state)#) Dalam contoh kita di atas, SQL statement yang dikirim ke database akan seperti: SELECT * FROM Customer WHERE State_ID IN (‘DC’,‘MD’,‘VA’) Looping terhadap sebuah COM Collection atau Structure Walaupun teknik ini ada berada di atas tingkatan dari artikel ini, anda harus tahu bahwa CFLOOP dapat melakukan pengulangan
46
terhadap structure atau obyek COM/DCOM collection. Untuk yang selalu ingin tahu sebuah obyek COM/DCOM collection adalah sebuah set dari item yang biasa yang direferensikan sebagai sebuah group.