Entri Data dengan Form

druid's picture

Saya sendiri amazed karena Drupal memberikan cara yang begitu mudah untuk mendayagunakan form. It's a snap!

Mari kita membuat form sederhana: entri data biodata. Tujuan tutorial
ini adalah memperkenalkan struktur kode dasar untuk mengolah form,
mulai dari mendefinisikan form, validasi, hingga submit. Supaya lebih
jelas, bisa langsung dicoba di menu sebelah kiri: Tutorial Form.

1. Struktur Dasar Form

Form di Drupal sangat sederhana. Untuk membuat form, kita tinggal
membayangkan nama form nya (misal: biodata), kemudian membuat struktur
kode dasar seperti ini:

function dqs_form_biodata() {
// definisikan form disini...
}

function dqs_form_biodata_validate($form_id, $form_values) {
// validasi form disini...
}

function dqs_form_biodata_submit($form_id, $form_values) {
// pengolahan submit disini...
}

Perhatikan dispatcher nya... Cara menampilkan form ini adalah
melalui fungsi drupal_get_form() dengan parameter nama fungsi yang
memuat definisi form.

$items[] = array(
'path' => 'dqs_form',
'title' => 'Tutorial Form',
'callback' => 'drupal_get_form',
'callback arguments' => array('dqs_form_biodata'),
'access' => user_access('dqs_form user'),
'type' => MENU_NORMAL_ITEM
);

Form ini sangat fleksibel, bisa ditampilkan dimana saja. Misalnya
untuk menampilkan form filter di setiap halaman. Caranya mudah, tinggal
dirender sebagai output seperti biasa.

$output .= drupal_get_form('dqs_form_biodata');
return $output;

2. Definisikan Form

Ini adalah bagian yang seru, karena kita bebas menempatkan elemen
form disini, seperti: textbox, select, radio. Simpelnya, tinggal copy
paste dari contoh kode nya Smiling

Dalam contoh ini saya menggunakan fieldset untuk pengelompokan
elemen. Fieldset juga akan memberikan efek collasible yang keren.
Silakan diubah kodenya untuk melihat efek perubahannya.

$form['bio'] = array(
'#type' => 'fieldset',
'#title' => 'Biodata',
'#description' => 'Mohon melengkapi biodata Anda.',
'#collapsible' => TRUE,
'#collapsed' => FALSE,
);

Perhatikan bahwa dalam definisi elemen form lainnya, saya selalu
gunakan prefix ['bio'] untuk menandai bahwa elemen-elemen ini masuk
dalam kelompok fieldset yang sama.

Untuk elemen seperti select dan radio, perhatikan atribut #options.
Ini yang akan menjadi daftar item elemen form select dan radio.
Perhatikan bahwa ini harus diisi dengan array berpasangan
key=>value. Nilai key ini yang akan kita proses jika form sudah
disubmit. Jika Anda ingin set atribut #default_value, pastikan diisi
dengan key yang sesuai.

Oh satu hal penting lagi. Jangan pernah lupa bahwa di akhir fungsi definisi form harus selalu ada:

  return $form;

Kadang kita dibikin pusing kok form tidak tampil, ternyata seringkali kita melupakan satu baris sederhana ini.

3. Validasi Form

Disini kita bebas menuliskan kode untuk validasi form, misal:
memastikan format tanggal sudah ditulis dengan benar, atau memastikan
field angka benar-benar ditulis angka (bukan huruf).

Setiap nilai elemen yang di-submit dievaluasi melalui variabel
$field_values. Untuk mendapatkan hasil form yang sudah di-submit,
tinggal akses sesuai nama elemen pada saat mendefinisikan form, contoh:

$nama = $field_values['nama'];
$kota = $field_values['kota'];

Jika validasi gagal, kita tinggal tampilkan pesan kepada user dengan menggunakan fungsi form_set_error, contohnya:

form_set_error('biodata', 'Nama Lengkap harus memuat minimal 5 karakter.');

Silakan dicoba dari menu Tutorial Form, dalam kondisi Nama Lengkap
masih kosong, coba klik submit. Pesan error yang cukup manis kan Smiling

4.Submit Form

Disini kita bisa melakukan pengolahan apapun terhadap isi variabel
$form_values, misal disimpan ke database. Jika pengolahan berhasil,
kita bisa memberi pesan kepada user, kali ini dengan fungsi drupal_set_message, contoh:

drupal_set_message("Data $nama (Kelamin: $kelamin, Kota: $kota) sudah tersimpan.");

Satu hal yang penting, dalam fungsi submit ini kita tidak bisa
menampilkan/merender output. Yang dapat kita lakukan adalah redirect ke
halaman lain. Jika biodata berhasil disimpan, mungkin kita ingin
redirect ke halaman yang memuat tabel biodata. Cara redirect:

drupal_goto('dqs_form/result');

Kode tersebut akan me-redirect ke dispatcher "dqs_form/result", jika
dilihat di daftar dispatcher, sebenarnya ini hanya memanggil fungsi
dqs_form_result().

function dqs_form_result() {
$output = theme_box('',"Halaman ini dapat disempurnakan lebih lanjut, misal dengan tabel.");
return $output;
}

5. Voila!

That's it. Sangat mudah kan... langsung saja, copy paste... selamat bermain dengan form Smiling


Comments

Form di dalam block

halo mas druid.. (biasa klo komen pasti karena lagi bingung jadi nanya sama masternya).

Saya lagi coba bikin block seperti search, di dalam block ada form isian.
permasalahannya adalah, saya ingin hasil submit dari form muncul di block bukan di page, gmn mas caranya agar tetep tampil di dalam block tersebut, saya sudah baca modul polling tapi lom mudeng, thanks pencerahaanya

kodenya

itu kodenya di masukan kemana? masuk ke admin gitu/

 

install di folder modules

unzip, kemudian masukkan ke folder modules:
/sites/all/modules

aktifkan module di halaman Admin/Modules.

Selamat mencoba!

lanjutan form

salam semua ! sya ingin membuat form yang di dalamnya terdapat combo box propinsi, combo box kabupaten & combo box kecamatan, dimana datanya tersimpan (lookup) di dalam database mysql (tbl_propinsi, tbl_kabupaten & tbl_kecamatan). Nah pertanyaannya adalah, bagaimana agar jika saya memilih propinsi A, kabupaten yang muncul di list combo box kabupaten hanya kabupaten yang ada di propinsi A, begitu juga dengan kecamatannya. Terima kasih!

setting user dqs_demo

klo kita ingin membuat user yang hanya bisa melihat datanya saja ( tanpa link tambah dan edit) gimana caranya ya? apakah harus membuat module baru atau bagaimana? Thanks

gunakan fungsi user_access()

mudah sekali, itu menggunakan fungsi user_access(), sudah saya rencanakan menulis tutorial ttg ini, tapi belum sempat2...

menunggu tutorialnya

mas... kapan nih menulis tutorial fungsi user_access() , udah ga sabar nih , di tunggu nih...

masih belum ngerti, ditunggu

masih belum ngerti, ditunggu ya tutorialnya.. thanks

Link Tambah ,edit dan delete dqs_form tidak muncul di page

Saya coba melakukan instalasi module dqs_form_D6 berhasil, namun knapa tidak ada link untuk tambah edit dan delete data, kira2 apa yg salah.

thx

Barry

dqs_form hanya utk memproses form

dalam dqs_form memang tidak ada tambah/edit/delete, karena tutorial ini fokus pada bagaimana memproses form submit. Untuk demo yang lebih lengkap (ada tambah/edit/delete), silakan ke: http://www.drupalquickstart.com/dqs_demo

semoga membantu yaa...

dqs demo

saya dah coba install module dqs_demo D6 dan berhasil,tetapi link tambah dan deletenya ga muncul,knapa ya? thanks

 

 

wah, saya pasti lupa

wah, saya pasti lupa menyertakan file icon nya dalam file zip... sementara ini, dicopy aja icon nya dari modul demo (save as ke folder files).

sebenarnya yang ga ada itu

sebenarnya yang ga ada itu bukan hanya gambarnya tetapi link tambah dan editnya juga waktu itu saya coba pake mozila tetapi setelah barusan saya coba pake IE tenyata lnknya muncul (meskipun gambarnya ga muncul karena saya ga tau folder files itu ada dimana? ),  apa yang salah dengan mozila saya ya?

sudah bisa

sory bro, sekarang modulenya dah jalan,yaitu dengan mengcopy gambar icon ke folder files (sekarang dah tau tempatnya), OK thanks 4 all, ditunggu kelanjutan tuorial web applicationnya...

Membuat halaman baru

Aku awang satriujana, aku ingin sekali belajar membuat web, maklum kemaren aku coba joomla, tapi kok sulit ya..khususnya istalasinya..sekarang coba drupal, begini bagaimana membuat halaman baru, dan memulai menulis teks, serta templetnya, ..tolong beritahu aku..trim's

selamat bergabung, Drupal

selamat bergabung, Drupal memang mudah, untuk membuat page, klik menu "Create Content", kmdn pilih antara Page (statis tanpa comments) atau Story (bs interaktif dg comments). Disana bisa mulai menulis teks. Supaya page nya bs tampil, jangan lupa buat menu yang merujuk pada ID node nya ya...

semoga sukses..

membuat halaman baru

Terima kasih anda telah menjawab pesen ku...begini ya...link create content itu mana sih...tolong beri tahu aku...apa di web ini ada fasilitas create content...tolong beri tahu aku...ok. Da kalau harus install server XAAMP bisa apa ya...tolong beri tahu juga...terima kasih.

link "Create Content" akan

link "Create Content" akan tampil jika sudah login sebagai Administrator ya bro. Drupal runs well walaupun diinstall di XAMPP. Ok, semoga membantu ya.

login dan instalasi

Terima Kasih ya ,..mas..bagaimana sih cara-cara nya instalasi servernya, apa menggunaan xaamp, ...dan user/pasword administrator..itu dari mana sih mas...tolong beritahu aku..ok.

Instalasi Drupal sangat mudah

Instalasi server? wah pakai XAMPP mudah sekali. tinggal setup trs langsung aktif servernya (apache, mysql, dkk).

password administrator Drupal? itu habis install Drupal, kan pertama kali langsung diminta membuat account administrator. 

oke ya, selamat mencoba...

Instalasi drupal

Mana yang dulu di instal apa drupalnya atau servernya ,mas..dan yang di ekstrak...mana...server atau drupal...tolong beri penjelasan..ok

Panduan Instalasi Drupal

lebih detail ttg instalasi Drupal bisa merujuk ke:

http://www.drupal-id.com/tutorial_install_drupal_5_x

jangan ragu untuk mengikuti step by step nya ya...

mengekstrak ...file

setelah saya membuat create database dengan "drupaltestdb", kemudian bagaimana cara mengekstraknya...tolong beri tahu aku..terima kasih..ok.

Mana yang di kerjakan

Kemaren aku udah instal xaamp..sukses, masuk ke comtrol panel..terus mana yang di kerjalan. sebelah kiri cintrol panel ada tulisan: "service, dan "scm"..dan di bawah ada "ada" tulisan start", sebelah kiri mercury ada tulisan "star"..itu yang saya click...tapi ada keterangan di bawah ...menyangkut mercury..maksudnya apa itu, apa saya salah...tolong beritahu aku...terima kasih.

gampang bro tinggal klik

gampang bro tinggal klik tombol start untuk apache dan mysqlnya,trus klo mau dijalanin sebagai bagian dari  service windows klik svc-nya


Tutorial Module Drupal 6

Memenuhi harapan dari member, sekarang seluruh tutorial DQS sudah kompatibel dengan Drupal 6. Klik disini untuk detailnya.

Promo Hosting Ekstra!

Reseller Hosting Indonesia sedang ada promo Ekstra Disk Space (tambahan 1GB-3GB) dan Ekstra Sewa Hosting (tambahan 1-3 bulan sewa gratis). Jangan lewatkan kesempatan ini, diskon 20% bagi member DQS juga tetap berlaku.

Rekan yang berminat gunakan form Kontak Kami, pilih kategori Hosting.

Live Buddies

There are currently 0 users and 2 guests online.

DQS Members

  • Registered Users: 313

Partners

GrowUrl.com - growing your website