Documents
Resources
Learning Center
Upload
Plans & pricing Sign in
Sign Out

ColdFusion II

VIEWS: 446 PAGES: 35

									                                                                       11




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 <FONT SIZE=”+2”>
bersama dengan CFML (ColdFusion Meta Language) tags seperti
<CFQUERY>,         <CFIF>     and   <CFLOOP>.      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   World"   dalam   ColdFusion,    ini   hanya
melibatkan HTML saja:

        <HTML><BODY>
          Hello World
        </BODY></HTML>
                                                                       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




     <HTML><BODY>
     <FORM NAME="GetName" ACTION="HelloWorld2.cfm"
     METHOD="post">
     <INPUT TYPE="TEXT" NAME="FirstName">
     <INPUT TYPE="SUBMIT" VALUE="OK">
     </FORM>
     </BODY></HTML>

GetName.cfm



     <HTML><BODY>
     <CFOUTPUT>
     Hello #FirstName#
     </CFOUTPUT>
     </BODY></HTML>

HelloWorld2.cfm

Halaman pertama GetName.cfm adalah sebuah HTML murni untuk
tampilan input. Halaman kedua HelloWorld2.cfm mengandung dua
perintah ColdFusion - <CFOUTPUT> tag untuk menyalakan output
ColdFusion variable(yang akan berpasangan dengan </CFOUTPUT>
tag untuk mematikannya). Dan tanda pagar (#) sebagai pemisah
variabel FirstName yang disampaikan sebagai variabel form dari
halaman     GetName.cfm.   Saat    halaman   dijalankan   dan   anda
mengetikkan    nama   Michael     ke   halaman   pertama,   hasilnya
kemudian dapat kita lihat "Hello Michael" dan HTML berikut akan di
generate:

     <HTML><BODY>
     Hello Michael
     </BODY></HTML>
                                                                     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        tanggal/jam
(date/time) dan jam akan berada diantara       0 dan 23 dari nilai
tanggal/jam.

     <HTML><BODY>
     <CFOUTPUT>
     <CFIF Hour(Now())GT 18>
        Selamat Malam
     <CFELSEIF Hour(Now())GT 12>
        Selamat Siang
     <CFELSE>
        Selamat Pagi
     </CFIF>
     #FirstName#
     </CFOUTPUT>
     </BODY></HTML>

HelloWorld3.cfm

Disini juga digunakan <CFIF> <CFELSE> </CFIF> 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 <BR> 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, Flow-
Control, 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   DataBase
Connectivity) serta DSN-nya kita namakan CompanyDB.
                                                                    19




Untuk     membuat       sebuah   query   select   yang   diberi   nama
EmployeeList, yang akan mengambil semua data dalam tabel
employees, kita gunakan syntax dibawah ini:

        <CFQUERY NAME="EmployeeList"
        DATASOURCE="CompanyDB">
           SELECT FirstName, LastName, PhoneNumber,
        Email
           FROM Employees
           ORDER BY LastName
        </CFQUERY>

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             INSERT INTO TableName (FieldsList) VALUES
records         (ValuesList)
Delete          DELETE * FROM TableName WHERE conditions
                                                                 20




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:

      <CFOUTPUT QUERY="queryname" MAXROWS=n STARTROW=s>
         Text biasa, HTML tags, dan
         dynamic field reference (contoh: #FirstName#)
      </CFOUTPUT>

Catatan: penggunaan tanda pound (#) untuk mengeluarkan nilai
variable 'FirstName'. Sebuah CFOUTPUT tag dapat berisi:

     Text biasa
     HTML tag
     Reference ke query columns
     Reference ke parameter dinamis seperti field form.
                                                                    22




      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:

       <CFOUTPUT QUERY="EmployeeList">
           <HR>
           #FirstName# #LastName#
           (Email: <A HREF="mailto:#Email#">#Email#</A>)
<BR>
       </CFOUTPUT>

EmployeeList2.cfm

Jika ada 3 record dari hasil query tersebut, HTML yang di
generate oleh     bagian   CFOUTPUT   ini   akan   kelihatan   sebagai
berikut:

           <HR>
           Deborah Jones
           (Email: <A
HREF="mailto:dj@ibm.net">dj@ibm.net</A>)<BR>
           <HR>
           John Smith
           (Email: <A
HREF="mailto:js@ibm.net">js@ibm.net</A>)<BR>
           <HR>
           Frank Wilson
                                                                  23




         (Email: <A
HREF="mailto:fw@ibm.net">fw@ibm.net</A>)<BR>

Dalam standar HTML, <A HREF> tag dengan mailto: URL akan
memberi email link dalam halaman.

Menampilkan Output Query dalam Tabel

Menampilkan       hasil   query   dengan   menggunakan    CFOUTPUT
biasanya cukup seperti di atas jika hasil record masih sedikit. Akan
tetapi kita ingin agar hasil tampilannya lebih baik dan rapih.
CFOUTPUT tag dapat memasukkan HTML apapun, dan kita akan
menggunakan standar HTML table tag untuk membuat sebuah tabel
secara dinamis.

Kita rubah contoh kita di atas untuk menampilkan tabel:

     <TABLE>
     <TR>
     <TD>First Name</TD>
     <TD>Last Name</TD>
     <TD>Email</TD>
     </TR>
     <CFOUTPUT QUERY="EmployeeList" MAXROWS=10>
             <TR>
                    <TD>#FirstName#</TD>
                    <TD>#LastName#</TD>
                    <TD><A
     HREF=”mailto:#Email#”>#Email#</A></TD>
             </TR>
     </CFOUTPUT>
     </TABLE>
                                                              24




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.

        <TABLE>
        <TR>
        <TD>First Name</TD>
        <TD>Last Name</TD>
        <TD>Email</TD>
        </TR>
               <TR>
                      <TD>John</TD>
                      <TD>Smith</TD>
                      <TD><A HREF=”mailto:js@ibm.net”
        js@ibm.net</A></TD>
               <TR>
        ...




        </TABLE>

Dalam browser kita, akan kita lihat seperti ini:


First Name Last Name           Email
Deborah         Jones          dj@ibm.net
John            Smith          js@ibm.net
Frank           Wilson         fw@ibm.net
                                                                  25




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:

     <CFQUERY NAME="EmployeeList" DATASOURCE="CompanyDB">
        SELECT * FROM Employees
        WHERE LastName = '#Form.LastName#'
     </CFQUERY>
                                                                   26




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"
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.
                                                                   27




              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.
Application   Variable yang hanya ada untuk aplikasi individual.
variables     Nama aplikasi didefinisikan dalam CFAPPLICATION
              tag, dimana biasa digunakan dalam file
              application.cfm.
                                                              28




Email Dinamis

Kita teruskan membahas bagaimana ColdFusion bekerja. Kita akan
bahas pengiriman email dan bagaimana kita gunakan dalam
pembuatan web site dinamis.



CFMAIL

Tag <CFMAIL> 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. <CFMAIL> mempunyai parameter dikirimkan kepada siapa
memakai TO, pengirim memakai FROM, sebuah CC dan SUBJECT.
Isi email itu sendiri diantara dalam   <CFMAIL> dan </CFMAIL>
tags. Agar lebih jelas, kita akan membuat sebuah inquiry dari
pelanggan sebelum kita simpan dalam database.



Mengirimkan email berbasis form

Pelanggan memasukkan namanya, email, suject dari inquiry serta
pesan dalam input form ini:


<HTML>
<BODY>
 Request more information.<BR>
 <FORM ACTION="RequestInfoSub.cfm" METHOD="POST">
  Name: <INPUT NAME="FirstName" TYPE="text">
         <INPUT NAME="LastName" TYPE="text"><BR>
  Email: <INPUT NAME="Email" TYPE="text"><BR>
  Subject: <INPUT NAME="Subject" TYPE="text">
                                                                        29




  Details: <TEXTAREA NAME="InquiryText"></TEXTAREA>
  <INPUT NAME="sumbit" TYPE="submit">
  <INPUT NAME="Clear" TYPE="reset">
 </FORM>
</BODY></HTML>


Halaman output kita gunakan untuk mengirimkan email ke bagian
marketing   dengan      menggunakan       tag    <CFMAIL>.    Kita    juga
mengirimkan       CC   ke   customer   kita,    sehingga   mereka    dapat
konfirmasi dari                   permintaan                    mereka.



<CFMAIL FROM="#Form.EMailAddress#"
 TO="marketing@perusahaanku.com"
 CC="#Form.EMailAddress#"
 SUBJECT="Customer Inquiry">
The following inquiry was posted to our Web site:


Name: #Form.FirstName# #Form.LastName#
Subject: #Form.Subject#
#Form.InquiryText#
</CFMAIL>


Pada halaman yang sama kita juga menyimpannya dalam database
dengan menggunakan tag <CFQUERY> sebagai berikut.


<CFQUERY NAME="EmployeeList"
DATASOURCE="CompanyDB">
INSERT INTO Leads
 (FirstName, LastName, Email, Subject, InquiryText,
                                                                    30




LeadDate)
VALUES('#Form.FirstName#','#Form.LastName#',
 '#Form.EmailAddress#', '#Form.Subject#',
 '#Form.InquiryText#', #CreateODBCDate(now())#)
</CFQUERY>



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"   7 hari lalu sampai sekarang? Langkah pertama
adalah   menulis   sebuah   query   SQL    dan    menggunakan      tag
<CFQUERY> :


<CFQUERY NAME="GetEmail" DATASOURCE="CompanyDB">
SELECT FirstName, LastName, Email
FROM Leads
WHERE int(LeadDate) = int(now())-7
</CFQUERY>


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 <CFLOOP> tag. Tag ini akan membuat looping
dari setiap hasil yang didapatkan dari query tersebut. Dan dari
                                                                 31




setiap loop kita menyisipkan tag <CFMAIL> utnuk mengirimkan
email ke masing-masing pelanggan hasil query ini:


<CFSET ListSent = ''>
<CFLOOP QUERY="GetEmail">
 <!--- for testing uncomment the next line --->
 <!--- cfset ThisEmail="michael@teratech.com"--->
 <CFSET ThisEmail=email>
 <CFMAIL TO="#ThisEmail#" FROM="<info@teratech.com>
TeraTech"
  SUBJECT="Programming News"
  SERVER="smtp.mycompany.com">
  Dear #FirstName#,
  Here are this month's programming tips
 </CFMAIL>


 <CFSET ListSent = ListSent & " #FirstName#
#LastName#
   mailto:#ThisEmail# "
   & CHR(13) &CHR(10) & CHR(13) &CHR(10)>
</CFLOOP>


Di atas kita juga menyimpan daftar pengiriman email ke dalam
variabel ListSent. Kita menambahkan nama dan email ke dalam
variabel    menggunakan     tag    <CFSET>.     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 <CFMAIL> :


<CFMAIL TO="marketing@perusahaanku.com"
                                                               32




FROM="info@perusahaanku.com"
SUBJECT="Auto emails"
SERVER="smtp.mycompany.com">


Sending followup email on #dateformat(now())#


Name   Email
#listsent#


</CFMAIL>


Mengapa kita harus mengirimkan email yang terakhir ini? Jika kita
akan menggunakan jadwal untuk menjalankan program diatas
dengan schedule tertentu dengan menggunakan <CFSCHEDULE>,
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!

Note: <CFMAIL> 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.
                                                                       33




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    Secara         dinamis      membuat       serta
(SMTP)             mengirimkan         email.       Menggunakan
                   informasi statis, form input atau hasil
<CFMAIL>           query untuk mengendalikan alamat dan
                   isi email. Pengiriman beratus-ratus email
                   yang     dicustom        dalam     satu     kali
                   pengiriman.       Memudahkan       pembuatan
                   email HTM untuk aplikasi groupware dan
                   workflow.

Mengambil E-mail   Mengambil email dari server POP dan
                   menggabungkannya             dengan     aplikasi
<CFPOP>            ColdFusion. Memungkin interface aplikasi
                   e-mail      berbasis     web,      otomatisasi
                   pengambilan dan penyebarluasan email
                   dan aplikasi email yang pintar, seperti
                   auto      responder          dan      'listserv'.
                   Mendukung          semua       server      POP,
                   meninggalkan email tetap dalam server,
                   mengambil          email-email        tertentu,
                   menghapus dan attachment.

Mengambil          Interface ke Web server menggunakan
Halaman Web        HTTP. Membuat query distribusi dan
                   membuat bentuk                          tertentu
                                                                 34




<CFHTTP>           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
<CFLDAP>           Protocol   (LDAP)    seperti    Netscape's
                   Directory Server, Microsoft's Exchange
                   Server, Windows NT directory, Novell
                   NDS   directories,   Banyan    Vines,   dan
                   lusinan     Internet-based        lainnya.
                   Mendukung search, add, update, delete,
                   authenticated access, etc.



Kesimpulan

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.
                                                                      35




Looping in ColdFusion

Looping adalah teknik yang paling sering digunakan dalam teknik
pemrograman     untuk     mengulang    sekumpulan     instruksi     atau
menampilkan     output      berulang-ulang   sampai   kondisi      yang
diinginkan tercapai. ColdFusion mengimplementasi looping dengan
perintah <CFLOOP> 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
<CFLOOP> tag seperti yang diterangkan di bawah ini.

Index loops

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:

<CFLOOP INDEX="parameter_name"
   FROM="beginning_value"
   TO="ending_value"
   STEP="increment">
  HTML or CFML code to repeat
</CFLOOP>
                                                                 36




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">
    <CFLOOP INDEX="hour" FROM="0" TO="23">
       <CFOUTPUT>
          <OPTION VALUE="#hour#">#hour#
       </CFOUTPUT>
    </CFLOOP>
</SELECT>
:
<SELECT NAME="Minute">
    <CFLOOP INDEX="minute"FROM ="0" TO="59">
     <CFOUTPUT>
      <OPTION VALUE="#minute#">#minute#
     </CFOUTPUT>
    </CFLOOP>
</SELECT>

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">
    <CFLOOP INDEX="hour" FROM="0" TO="23">
      <CFLOOP INDEX="minute" FROM="0" TO="59">
        <CFOUTPUT>
          <OPTION VALUE="'#hour#:#minute#'">#hour#:#minute#
        </CFOUTPUT>
      </CFLOOP>
                                                                 37




  </CFLOOP>
</SELECT>

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
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.

<CFSET StopIt = 0>
<CFLOOP CONDITION="StopIt LESS THAN OR EQUAL TO 5">
   <CFSET StopIt = RandRange(1,10)>
   <HR>
</CFLOOP>
                                                                      38




Jika   diinginkan   keluar   dari   loop,   dapat   digunakan   perintah
<CFBREAK>

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 <CFOUTPUT> tidak dapat
diperbolahkan untuk digunakan dalam sebuah <CFOUTPUT> tag
sebelumnya. Sebagai contoh, kita iterasi alamat email dan untuk
setiap email tersebut kita kirim pesan.

<CFQUERY NAME="GetEmail"
   DATASOURCE="Library">
   SELECT Email , SecurityLevel
   FROM Customer
</CFQUERY>
<CFLOOP QUERY="GetEmail">
   <CFQUERY NAME="GetText"
        DATASOURCE="Library">
        SELECT EmailText, EmailSubject
        FROM Messages
        WHERE   SecurityLevel = #GetEmail.SecurityLevel#
   </CFQUERY>
   <CFMAIL QUERY="GetText"
        TO="#GetEmail.Email#"
        FROM="info@mycompany.com"
        SUBJECT="#GetText.EmailSubject#"
        SERVER="smtp.mycompany.com">#GetText.EmailText#
                                                              39




    </CFMAIL>
</CFLOOP>

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.

<CFQUERY NAME="StateNames"
DATASOURCE="Library">
SELECT State_ID, StateName
FROM States
</CFQUERY>
<FORM ACTION="example.cfm" METHOD="Post">
   <SELECT NAME="state" MULTIPLE>
        <CFOUTPUT QUERY="StateNames">
          <OPTION VALUE="‟#State_ID#‟">#StateName#
        </CFOUTPUT>
   </SELECT>
                                                                      40




  <INPUT TYPE="submit" VALUE="Submit">
</FORM>

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:

<H2>The following states were selected</H2>
<CFSET extraSQL = „FALSE‟>
<CFLOOP INDEX="ListElement"
  LIST="#form.state#"
  DELIMITERS=",">
   <CFOUTPUT>#ListElement#</CFOUTPUT><BR>
   <CFSET extraSQL = extraSQL & “ OR
        State_ID = „#PreserveSingleQuotes(ListElement)#‟”>
</CFLOOP>



ColdFusion List functions

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       list   dengan
                              menyisipkan     sebuah     nilai   di
                              awal   serta    menggese    semua
                              elemen ke kanan.
                                                            41




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
               pertama dari list.

ListLast       Mengembalikan         nilai         elemen
               terakhir dari list.

ListRest       Mengembalikan           list         tanpa
               elemen                         pertama.
               Mengembalikan list kosong jika
               list   tersebut    hanya       memiliki
               satu elemen.

ListDeleteAt   Mengembalikan          list         dengan
               menghapus          terlebih         dahulu
               elemen pada posisi tertentu.

ListFind       Mengembalikan          index          dari
               temuan pertama dalam sebuah
               list. Mengembalikan 0 jika tidak
               ditemukan.        Search      ini    case-
               sensitive.
                                                           42




ListFindNoCase       Mengembalikan       index      dari
                     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
                     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
                                                              43




                           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
                           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.


<CFQUERY NAME="GetCustomers"
  DATASOURCE="Library">
    SELECT *
    FROM Customer
    WHERE #PreserveSingleQuotes(extraSQL)#
</CFQUERY>

Jika keadaan yang dipilih adalah MD, VA dan DC maka kode di atas
akan mengenerate HTML berikut:
                                                               44




<H2>The following states were selected</H2>
MD<BR>
VA<BR>
DC<BR>

Dan query statement-nya akan menjadi:

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:
                                                                45




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
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.

								
To top