Dapatkan CD MP3 Murottal Al Qur'an dan Terjemahnya. Satu-satunya di Indonesia!!
Ingin Punya Script SMS Gateway dengan PHP + MySQL?

Dapatkan segera phpSMS V3.0, software SMS Gateway multi fungsi berbasis web buatan saya sendiri untuk keperluan Anda.
[Info Lengkap...]

Membuat Checkbox Dinamis dan Pemrosesannya


March 7th, 2009 | by rosihanari | Cetak Artikel Ini Cetak Artikel Ini

Pada artikel sebelumnya, saya telah menjelaskan bagaimana membuat checkbox beserta proses submitnya. Namun, checkbox yang dijelaskan tersebut bersifat statis, maksudnya item yang dituliskan pada checkbox kita sudah tentukan sendiri. Nah… bagaimana seandainya checkbox tersebut kita buat secara dinamis? Maksud dinamis di sini adalah list item akan diambil dari database. Wah kayaknya menarik tuh? Gimana yah cara membuatnya? Makanya.. simak terus artikel ini selanjutnya.

Dalam artikel ini, selain kita bahas bagaimana membuat checkbox dinamis, saya juga akan bahas tuntas bagaimana pemrosesannya. Yang saya maksud pemrosesan di sini adalah cara mengambil value yang dipilih dari checkbox serta menyimpan valuenya ke dalam database.

Untuk memudahkan pembahasan, kita ambil studi kasus saja ya. Studi kasus yang saya ambil di sini adalah pengambilan matakuliah oleh mahasiswa. Skenarionya adalah: daftar matakuliah akan tersaji dalam bentuk checkbox. Daftar matakuliah ini diambil dari database. Selanjutnya mahasiswa dapat memilih beberapa matakuliah yang ada dalam checkbox. Setelah mahasiswa memilih matakuliah yang mau diambil, berikutnya data disubmit dan disimpan ke database.

Berdasarkan skenario di atas, maka kita siapkan terlebih dahulu beberapa tabel pendukungnya. Untuk contoh ini, kita perlu tabel untuk menyimpan data matakuliah yang diambil mahasiswa serta tabel untuk menyimpan semua matakuliah yang ditayangkan. Untuk tabel-tabel yang lain, misalkan tabel mahasiswa atau yang lain silakan dibuat sendiri ya.

CREATE TABLE mk (
  kodeMK varchar(10),
  namaMK varchar(20),
  PRIMARY KEY (kodeMK)
)

CREATE TABLE ambilmk (
  nim varchar(8),
  kodeMK varchar(10),
  nilai float,
  PRIMARY KEY (nim,kodeMK)
)

Anda dapat menambahkan field-field yang lain pada tabel-tabel di atas bila diperlukan.

Untuk tabel mk, misalkan kita sudah siapkan record-recordnya sebagai berikut:

INSERT INTO mk VALUES ('M001', 'Algoritma');
INSERT INTO mk VALUES ('M002', 'Pengantar Basis Data');
INSERT INTO mk VALUES ('M003', 'Sistem Pakar');

Now… let’s take action… terlebih dahulu kita buat form untuk menampilkan list matakuliah yang ditayangkan untuk dipilih mahasiswa. Dalam form ini, misalkan kita siapkan sebuah textbox untuk memasukkan nim mahasiswa yang akan mengambil matakuliah. Di bawah textbox tersebut, kita tampilkan daftar matakuliahnya menggunakan checkbox.

form.php


Form Pengambilan Matakuliah

Masukkan NIM Daftar Matakuliah ".$data['namaMK'].""; $no++; } ?>
[/sourcecode] Catatan: Perintah pada baris ke-17 dalam script di atas akan menghasilkan tag-tag XHTML berikut ini ketika dijalankan
<input type='checkbox' value='M001' name='mk1' /> Algoritma
<input type='checkbox' value='M002' name='mk2' /> Pengantar Basis Data
<input type='checkbox' value='M003' name='mk3' /> Sistem Pakar

Perhatikan pada atribut name untuk setiap komponen checkbox. Atribut ini kita buat name yang unik untuk setiap checkboxnya. Jangan memberi value name yang sama untuk checkboxnya karena apabila diberikan name yang sama maka value yang disubmit adalah value dari checkbox terakhir yang dipilih. Oleh karena itu supaya namenya unik, kita pakai bantuan increment $no, sehingga kita dapatkan name 'mk1', 'mk2', ... dst.

Selanjutnya kita buat script untuk memproses value yang disubmit via form di atas. Mungkin yang menjadi kesulitan kita adalah membaca value yang diinput melalui checkbox dinamis tersebut. Untuk data NIM saya kira tidak menjadi masalah untuk dibaca.

Untuk membaca value berasal dari checkbox dinamis, kita dapat menggunakan looping. Lho mengapa looping? bukankah kita bisa menuliskan perintah untuk pembacaan value-value checkboxnya secara langsung seperti ini:

$mk1 = $_POST['mk1'];
$mk2 = $_POST['mk2'];
$mk3 = $_POST['mk3'];

Iya sih... tapi dalam contoh ini kan kita hanya punya 3 data matakuliah sehingga tidak menjadi masalah ketika ketika menuliskan perintah pembacaan valuenya satu persatu. Tapi.. bagaimana bila terdapat 30 matakuliah yang tersedia untuk dipilih? He.. 3x repot bukan? So.. solusinya adalah kita pakai looping.

submit.php


mysql_connect("dbhost", "dbuser", "dbpassword");
mysql_select_db("dbname");

$nim = $_POST['nim'];

for($i = 1; $i <= 3; $i++)
{
$mk = $_POST['mk'.$i];
if (!empty($mk))
{
$query = "INSERT INTO ambilMK VALUES('$nim', '$mk', 0)";
mysql_query($query);
}
}

echo "Terimakasih sudah memilih matakuliah";

?>
[/sourcecode]

Catatan:
Perintah pada baris ke-10 digunakan untuk membaca value untuk setiap komponen mk1, mk2, mk3. Apabila valuenya tidak kosong (empty), maka masukkan ke database.

Eh... tunggu dulu, pada contoh ini jumlah matakuliahnya adalah fixed yaitu 3, sehingga kita bisa dengan mudah mengeset jumlah loopingnya ada 3 (for($i = 1; $i <= 3; $i++)). Namun... bagaimana bila jumlah checkboxnya dinamis? Waduh... gimana nih? Ya.. kita terpaksa cari akal nih. Idenya adalah kita sisipkan sebuah komponen tersembunyi (hidden component) dalam form pemilihan matakuliah. Hidden component ini akan diisikan dengan jumlah matakuliah yang ditayangkan (muncul dalam daftar pilihan). Jumlah matakuliah ini dapat diperoleh dengan memanfaatkan increment $no, yaitu nilai $no terakhir setelah looping berakhir dikurangi 1. Mengapa harus dikurangi 1? Pikirkan sendiri ya.. :-)

Begitu form ini disubmit maka jumlah matakuliah ini menjadi input yang akan digunakan dalam looping. So... kita perbaiki script formnya menjadi seperti di bawah ini:

form.php


mysql_connect("dbhost", "dbuser", "dbpassword");
mysql_select_db("dbname");
?>

Form Pengambilan Matakuliah

Masukkan NIM
Daftar Matakuliah
$query = "SELECT * FROM mk";
$hasil = mysql_query($query);
$no = 1;
while ($data = mysql_fetch_array($hasil))
{
echo "
".$data['namaMK']."
";
$no++;
}
?>

[/sourcecode]

Jangan lupa, kita juga ubah sedikit script pemrosesan formnya

submit.php


mysql_connect("dbhost", "dbuser", "dbpassword");
mysql_select_db("dbname");

$nim = $_POST['nim'];
$jumMK = $_POST['jumMK'];

for($i = 1; $i <= $jumMK; $i++)
{
$mk = $_POST['mk'.$i];
if (!empty($mk))
{
$query = "INSERT INTO ambilMK VALUES('$nim', '$mk', 0)";
mysql_query($query);
}
}

echo "Terimakasih sudah memilih matakuliah";

?>
[/sourcecode]

Udah selesai deh scriptnya. Mudah bukan cara membuat checkbox dinamis ini berserta pemrosesannya? Tidak ada yang tak mungkin dengan programming. Semuanya pasti ada caranya, selama kita punya ide untuk menyelesaikannya. 'Ide' is the most important thing in programming. So.. inilah yang membuat mahalnya suatu program atau script, karena 'ide' sendiri adalah mahal :-)

Mudah-mudahan artikel ini ada manfaatnya. Selamat belajar dan mencoba.

VN:F [1.9.3_1094]
Rating: 9.8/10 (4 votes cast)
Membuat Checkbox Dinamis dan Pemrosesannya, 9.8 out of 10 based on 4 ratings
Anda ingin mendownload beberapa tool programming 100% gratis?
Silakan download di FREE PROGRAMMING TOOLS.
atau ingin berdonasi untuk pengembangan blog ini cukup dengan $1 via Paypal?



Beberapa artikel terkait


Share this article on:

Kata kunci: checkbox - PHP - script -


Ada 49 komentar dalam artikel ini.

  1. rais says:

    oke pak guru saya coba dulu ya…
    mau membuat moderasi member dengan cara seperti ini…

  2. Hari Mulyanto says:

    kalo yang ingin kita tampilkan bukan cuma
    “Terimakasih sudah memilih matakuliah”, misalnya saya ingin mengubah pilihan tersebut gmn ya Pak?
    Jadi misal saya memilih Algoritma dan Pengantar Basis Data, gmn supaya saat submit yang keluar sebuah halaman yang isinya NIM serta daftar mata kuliah, dimana Algoritma dan Pengantar Basis Data dalam keadaan terpilih (tercentang), sehingga saya dapat mengubah pilihan tersebut
    gmn script php-nya.. terimakasih…

  3. eddy says:

    sip manatap nih mas :D

    mas eddy mau nayak gimana sih membuat rekap ???

    contoh nya rekapitilusi kuis gitu,,

    misalkan user nya ada empat dan jumlah soal nya 10,pilihan ganda..!

    yang hasil rekapnya itu seluruh nama user,id user dan jawaban soal no 1-2,

    Postingan terakhir si eddy di blognya: Tololpedia

  4. rosihanari says:

    to eddy: pertama rancang dulu tabelnya misalnya dengan struktur field spt ini

    iduser
    namauser
    nosoal
    jawaban

    lalu untuk membuat rekapnya untuk seorang user X gunakan query

    SELECT * FROM tabel WHERE iduser = …;

  5. fatik says:

    bang, saya mempunyai website http://ambil-free.co.cc.. saya gak tahu cara membuat comment form.. trus, saya bikin website pake frontpage.. gimana caranya?..

  6. cahcomputer says:

    thanks untuk infonya…
    .-= cahcomputer´s last blog ..Cara Buat Kalender Online =-.

  7. dodo says:

    pak saya dah coba tutornya
    keren abiz

    lalu bagaimana jika saya ingin mengedit datanya dengan konsep check box dinamis

    jadi data dari check box adalah dinamis, dan sudah terpilih secara otomatis ketika akan di edit, lalu tinggal kita ganti dan edit datanya

    itu gmana ya pak???
    tolong ya…

  8. rosihanari says:

    to dodo: coba baca artikel saya yang lain di http://blog.rosihanari.net/editing-data-tanggal-via-form-dengan-php mungkin penjelasannya bisa membantu Anda. Konsepnya adalah dengan IF.

  9. dodo says:

    lalu bagaimana pak, jika saya ingin membuat jika data yang ada di checkbox belum di pilih maka akan muncul pesan bahwa data belum di pilih..??

  10. rosihanari says:

    to dodo: konsepnya pake IF jga mas.

    $nilaiCombo = $_POST['nilaiCombo'];
    if ($nilaiCombo == “”) echo “Combo belum dipilih”;

  11. ghani says:

    pak, saya mau nanya kalau data yang sudah diproses tersebut ditampilkan melalui pie chart, gmna ya pak?
    mohon bantuannya.

  12. Newbie says:

    saya menggunakan webserver XAMPP,
    tetapi trnyta stelah sya copy-paste script dri bpk,
    muncul pesan error berikut:

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\MySite\htdocs\form.php on line 15

    apa yg harus sya lakukan?
    trimakasih

  13. rosihanari says:

    to newbie: mungkin ada query SQL yang salah pada script Anda. Coba cek nama tabelnya. Sesuai tidak?

  14. mustikaning says:

    mau tanya mas, setelah data diatas disimpan di database, terus kalo mau nampilin lagi gimana (dari database) dengan checkbox yng di centang sama dengan pada saat disimpan.hal ini digunakan pada saat akan ada perubahan data (diedit)thx

  15. deva says:

    bagaimana agar hasil pengambilan mata kuliah dari tabel mk hasilnya dibuat dalam bentuk tabel ???mohon dijawab

  16. toshi says:

    mas kalo pake oracle gimana ??
    penting banget nie, pasti tmn2 juga bnyak yg pengen tau.

    thx. mohon petunjuk.

  17. rosihanari says:

    to toshi: untuk masalah fetching data dari oracle dengan PHP, bisa dibaca referensinya di http://us3.php.net/manual/en/function.oci-fetch-array.php trus selain itu idenya sama

  18. toshi says:

    oke,,
    thx bgt mas..

    oia request mas, skali-kali gt buat tutor tntang php oracle,yg oci.
    soalx di blog ato forum2 laen masih jarang banget..
    sukses mas.thx

  19. pandu says:

    pak, dengan script di atas, saya mencoba untuk menampilkan datanya…

    nah, kalo menggunakan for, yang muncul datanya itu menjadi sebanyak yang di centang, gimana caranya biar data yang muncul cuman 1 aja pak?

    terimakasih

  20. rosihanari says:

    to pandu: maksudnya data yang muncul dimana? apa data yang tersimpan di databasenya? kalo yang tersimpan ke db nya kan memang harus sejumlah data yang dicentang?

  21. pandu says:

    bukan gitu pak maksudnya, coding form.php di atas saya ganti index.php lalu coding submit.php saya ganti hasil.php.

    nah, permasalahannya kalo gini pak, pada db saya pake 3 table, contohnya:
    table 1 berisi id, idtable2, idtable3
    table 2 berisi idtable2, kelamin
    table 3 berisi idtable3, nama

    idtable2 pada table 2 = idtable2 pada table1
    id pada table 3 = idtable3 pada table1

    lalu checkbox di file index.php ngambil table 3
    kemudian ketika dipilih, hasilnya akan muncul pada file hasil.php dengan menggunakan 3 table tersebut.

    aduh pak, maaf… kalo saya bertanya lewat tulisan, saya jadi bingung sendiri nulisnya…

    bukannya saya gak sopan atau kurang ajar, tapi saya berikan link file nya saja pak… sekali lagi saya mohon maaf kalo gak sopan…

    ini pak…
    http://fileupload.filetac.com/file/8284115297aa36fbff2ce2cd54d676db91c87a4c

    terimakasih…

  22. fata says:

    mas fata mw nanya
    tu setelah disimpan jadinya 1 nim buat 1 matakuliah

    bisa ga mas dalam 1 nim dy bisa nyimpen lebih dr 1 matakuliah..

    maksih mas

  23. rosihanari says:

    to fata: masa sih mas? ooh.. mungkin untuk tabel ‘ambilmk’ nya yang anda set sebagai kunci hanya NIM nya saja kali? kan seharusnya ada 2? NIM dan KodeMK? kalo dua2nya diset maka 1 NIM bisa lebih untuk 1 matakuliah. Itu sebenarnya masih kurang yaitu tambahan field Semester (gasal atau genap) dan Tahun Ajaran. Keempatnya harus dijadikan kunci.

  24. sutadi says:

    Siang pak. Saya lagi membuat siste pakar dan ingin menggunakan metode check box seperti di atas. namun saya bingung harus bagaimana menghubungkannya. karena saya ingin membuat proses dimana sistem mengecek jika yang di ceklis ada G1 dan g3 dan G4 maka hasilnya P1 dan lain-lain. Mohon bantuannya

    terima kasih pak

  25. rosihanari says:

    @sutadi: itu hanya main IF saja mas…

  26. Nugroho says:

    Pak, saya coba insert checkbox value tapi datanya tidak keluar di database. Apa ada yang salah dengan coding saya?
    Terima kasih.

  27. oki says:

    pak tutorialna mantap tp kok yang ini gag masuk ya d database nya..???
    mohon pencerahanya pak.

  28. rosihanari says:

    @oki: bisa kok… coba anda cek lagi settingan koneksi ke db nya, atau mungkin ada query yang salah, atau nama variabel yang kurang tepat/salah tulis.

  29. hendipra says:

    kalau di tabel ambilmk ditambahin field dosen
    bagaimana cara inputanya dimana dosen tersebut mengajar mk yang dipilih

  30. Miswan says:

    MAKASIH PAK GURU TUTORIAL MU SANGAT MEMBANTU SAYA?

  31. wahyu handoko says:

    mas, mau tanya, kalu checkbox nya datanya banyak, bagaimana cara membuat menjadi 2 kolom atau lebih,,,biar rapi n form tidak terlalu panjang,,
    terimakasih banyak mas, tutorial mas, sungguh sangat membantu belajar saya,,

  32. rosihanari says:

    @hahyu handoko: anda main pake tabel saja mas. checkboxnya ditaruh di dalam tabel dengan 2 kolom atau lebih.

  33. asdur says:

    pak. bagaimana membuat emotion seperti di YM! dengan menggunakan php

  34. didin says:

    mas saya baru belajar php…
    gimana cara insert menggunakan mssql mas, database saya menggunakan sql server 2000. saya udah bikin checkbox kaya diatas, value juga udah nongol.. tapi saya ga bisa bikin submit nya, tolong di bantu mas, urgent bener.. kalo bisa di kirim ke email saya..

  35. budi says:

    pak guru mo minta bantuan neh….

    gmn cara input data dengan checkbox tapi datanya diambil dari 3 tabel

    misal dari tabel mapel,tabel soal,tabel kelas ingin di inputkan di tabel soal_ujian….agar lebih jelas lagi neh struktur tabelnya
    tabel mapel fieldnya kd_mapel dan nama_mapel
    tabel soal fieldnya no_soal,soal,pilihan_a,pilihan_b,pilihan_c..dst kemudian tabel kelas fieldnya kd_kelas,nama_kelas,tanggal,waktu,jumlah_soal…

    nah saya ingin menginputkan dari 3 tabel tsb di tabel soal ujian dengan field kd_mapel,no_soal,kd kelas….

    mohon bantuannya pak…ilmu dari bapak banyak berguna buat Tugas akhir saya…

    terima kasih sebelumnya…

  36. budi says:

    pak minta tolong donk

    gmn caranya lok saya ingin input data dari 3 tabel trus hasil inputnya dimasukan di satu tabel

  37. rosihanari says:

    @budi: maksudnya input dari 3 tabel itu apa ya?

  38. rosihanari says:

    @budi: idenya ya… buat form untuk entri datanya. Di dalam form itu terdapat 3 komponen misalnya combo box. Combo ke-1 untuk memilih kode mapel. Kode mapel yang ada di combo ini mengambil data dari tabel mapel. Lalu buat combo ke-2 untuk memilih no soal yang diambil dari tabel soal, demikian pula untuk combo ke-3 (kode kelas). Lalu setelah ketiga combonya dipilih, lalu disubmit dan masuk ke tabel soal ujian.

  39. rosihanari says:

    @didin: saya blm pernah pakai MS SQL mas…

  40. irwan says:

    mohon beritahu listing php tentang pemesanan tiket. yang isinya nama tujuan(dengan combobox),kelas(combobox),member(choice{ya/no}),harga tiket, sub total, diskon 10%(jk member), tot
    al bayar

  41. Fandi Akhmad says:

    Slam, pak…
    Saya..mau tanya, bgaimana cara menampilkan list checkboxnya dipisahkan dengan tanda koma(,)
    misal pada database:
    —————————–
    item | cat
    —————————–
    si kancil | fabel
    si kancil | fiksi
    —————————–

    Saya ingin menampilkannya

    Si kancil ada pada kategori : fabel,fiksi
    mhon bantuannya…

    oh ya,,..terimakasih pak tutorialnya :)

  42. Fajri says:

    mas saya mau nanya…
    pada bagian

    $query = “INSERT INTO ambilMK VALUES(‘$nim’, ‘$mk’, 0)”;

    “0″ disini menerangkan apa? thanks

  43. rosihanari says:

    @fajri: menandakan nilai matakuliahnya masih 0. Nanti nilainya akan diupdate jika dia sudah mendapat nilai.

  44. allezzii says:

    mas salm kenal sebelumnya,
    saya newbie nih.. pgn belajar DB + coding.

    saya punya permsalahan, gimana kalo data yang dimasukkan ke DB itu dinamis, maksutnya berubah2 terus.

    misalnya di tabel node,
    fieldnya ada : ip(primary), netmask, traffikmasuk, trafikkeluar,dan nama-mesin.

    nah swaktu2 khan data yg mau masuk(trafikmasuk) sama keluar kan berubah terus,
    sedangkan kalo diinsertkan akan menjadi masalah, ip khan jadi primary key.

    jadinya khan error, karena data sebelumya yang pasti sudah masuk lebih dulu.

    gimana caramenyiasatinya mas?
    makasih..

  45. rosihanari says:

    @allezzii: ya jangan jadikan ip sebagai PK dong mas… Anda buat 1 PK lain misalnya ID yang autoincrement.

  46. Fajri says:

    Mas, saya mau nanya lagi. Seperti contoh diatas, jika kita tambahkan lagi field sks, tampilan checkbox matakuliahnya dinamis. yang ingin saya tanyakan
    Bagaimana menghitung jumlah sks hanya yang dicentang pada checkboxnya saja..

    Terima Kasih Sebelumnya

  47. proklamator says:

    ijin sebar link ini gan di proklamator.com

    trims



Tolong beri komentar donk!

Komentar Anda akan berguna untuk kemajuan blog ini.


Mohon maaf, komentar yang menggunakan email palsu atau komentar bernada negatif atau cemooh secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil dalam daftar komentar.

Dimohon jangan pula memasukkan code program dalam bentuk apapun ke dalam komentar karena akan dianggap spam.

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word