Pada tutorial kali ini kita akan membahas mengenai cara menghubungkan form HTML dengan PHP.
Ketika membuat website atau aplikasi berbasis web, kita tidak bisa lepas dengan yang namanya form. Form ini digunakan untuk menerima input dari user untuk kemudian diolah sesuai keperluan.
Seperti kita ketahui, form HTML hanya digunakan untuk (1) menerima input dari user dan (2) mengirim data tersebut ke alamat tertentu, selesai, ya sampai disitu saja fungsi dari form HTML ini, tentang bagaimana data tersebut diolah, bukan menjadi tanggung jawab form lagi.
I. Elemen Form HTML
Elemen form <form..>
memiliki beberapa atribut penting yang akan menentukan kemana data dikirim dan dengan cara apa data dikirim, atribut tersebut adalah action
dan method
, misal kita buat file form.php
dan proses.php
yang kita letakkan didalam folder htdocs
Isikan kode berikut ke dalam file form.php
<h1>Form HTML Dengan PHP</h1>
<form action="proses.php" method="post">
<div>
<label>Nama</label><input type="text" name="nama"/>
</div>
<div>
<label>Email</label><input type="text" name="email"/>
</div>
<input type="submit" value="Simpan"/>
</form>
Klik DEMO untuk langsung melihat hasil
1 Atribut Action
Atribut action berisi alamat url kemana data form tersebut akan dikirim. Pada contoh script diatas, kita isi atribut action dengan proses.php
sehingga, ketika tombol submit di klik, maka data form tersebut dikirim ke http://localhost/form/proses.php
URL Relative VS URL Absolute
Jika alamat url ( termasuk pada atribut action pada form) ditulis tanpa menggunakan www
atau http
, maka alamat tersebut disebut relative url.
Misal pada contoh diatas, atribut action pada elemen <form>
yang ada di dalam file form.php
bernilai: proses.php
, artinya alamat tersebut relative (mengacu) pada posisi file form.php
(path url form.php
adalah http://localhost/form/
)
Dengan demikian, karena file proses.php
berada satu folder dengan file form.php
maka url untuk file proses.php
adalah http://localhost/form/proses.php.
Jika atribut action kita isi action="file/proses.php"
maka form akan dikirim ke http://localhost/form/file/proses.php
Selain url relative, kita juga dapat mengisi atribut action dengan url absolute, url absolute berarti alamat url ditulis penuh. misal http://localhost/form/proses.php
2 Atribut Method
Atribut method digunakan untuk menentukan dengan cara apa data dikirim. Atribut ini memiliki dua nilai, yaitu GET dan POST.
Method GET
Pada method GET, data pada form akan dikirim melalui url. Misal, pada form yang telah kita buat sebelumnya, kita beri atribut method dengan nilai get
, selanjutnya, kita isi isian nama, misal: Agus Prawoto Hadi dan email: prawoto.hadi@gmail.com, ketika kita klik tombol simpan, maka url akan berubah menjadi:
Pada gambar tersebut terlihat bahwa alamat url berubah menjadi:
http://localhost/form/proses.php?nama=Agus+Prawoto+Hadi&email=prawoto.hadi%40gmail.com
Pada url diatas, bagian parameter yang berisi data form dimulai dengan tanda tanya, selanjutnya diikuti parameter dengan format nama_data=nilai_data
, antar parameter dipisah dengan tanda ampersand ( &
)
Pada gambar diatas, terlihat bahwa spasi
berubah menjadi +
dan @
berubah menjadi %40
, hal ini dikarenakan ketika data dikirim via url, data tersebut akan diencode (URL encode).
Dalam URL Encode beberapa karakter akan diubah dengan karakter tertentu, namun tidak perlu khawatir, ketika data ditangkap oleh PHP, data tersebut akan di decode, sehingga kembali ke bentuk aslinya.
nama_data
berasal dari atribut name
dari tiap-tiap elemen input, sedangkan nilai_data
merupakan nilai yang kita isikan pada elemen input. Perhatikan ilustrasi berikut:
Method POST
Pada method POST, data pada form akan dikirim melalui http request header, sehingga tidak terlihat oleh user. Misal, pada form sebelumnya kita isi atribut action dengan nilai POST, selanjutnya, ketika kita klik simpan, maka alamat URL akan berubah menjadi:
Pada gambar diatas, terlihat bahwa tidak ada data yang dikirim melalui URL. Jika kita ingin melihat data yang dikirim, kita dapat menggunakan addon developer tools pada Chrome atau firebug pada Firefox, kemudian pilih bagian tab Network.
Method GET vs Method POST
Method GET dan POST memiliki beberapa perbedaan mendasar, diantaranya:
Method GET
- Kurang aman karena data terekspose, selain itu, karena dikirim melalui url, data tersebut akan tersimpan pada history browser
- Panjang data terbatas antara 2kb – 8kb tergantung jenis browser.
- Hanya dapat mengirim data teks, tidak dapat mengirim file
- Oleh browser tidak diperlakukan sebagai data sensitif, sehingga halaman tersebut dapat direfresh dengan mudah
Method POST
- Lebih aman, karena data tidak terekspose, selain itu, data yang dikirim tidak tersimpan pada history browser
- Dapat mengirim data berukuran besar.
- Dapat mengirim berbagai jenis data termasuk file
- Oleh browser diperlakukan sebagai data sensitif, sehingga ketika direfresh, browser akan meminta konfirmasi pengiriman ulang data.
Lebih jauh tentang kedua metode ini, termasuk kelebihan dan kekurangan, kapan digunakan, dan proses pengirimannya dibahas lengkap di: Memahami GET dan POST Pada PHP dan HTTP
II. Menangkap Data Dari Form HTML Dengan PHP
Setelah data dikirim oleh form HTML, maka data tersebut siap untuk diolah.
Menangkap Data GET
Untuk menangkap data yang dikirim dengan method GET, kita gunakan variabel $_GET
, variabel ini berbentuk array dengan index berupa nilai atribut name
pada elemen input.
Misal: isikan file proses.php
dengan script berikut:
<?php
echo 'Nama : ' . $_GET['nama'] . '<br/>';
echo 'Email : ' . $_GET['email'];
Selanjutnya, ubah atribut action pada file form.php
dengan nilai GET
. Buka form dan isikan Agus Prawoto Hadi pada field nama dan prawoto.hadi@gmail.com pada email, kemudian klik submit. Hasil yang kita peroleh:
Untuk melihat semua data yang dikirim, gunakan fungsi print_r()
, misal:
echo '<pre>'; print_r($_GET);
/* Hasil:
Array
(
[nama] => Agus Prawoto Hadi
[email] => prawoto.hadi@gmail.com
[submit] => Simpan
)
*/
Karena data dikirim melalui URL, maka kita dapat mengubah data tersebut dengan mengubah url, misal ubah URL menjadi:
http://localhost/form/proses.php?nama=JagoWebDev&email=jagowebdev@gmail.com
maka hasil yang kita peroleh:
Menangkap Data POST
Sedangkan untuk method POST
, kita gunakan variabel $_POST
. Sama seperti $_GET
, variabel $_POST
juga berbentuk array dengan index berupa nilai atribut name
pada elemen input.
Misal kita ubah nilai atribut action pada elemen form menjadi post, selanjutnya dan kita ubah isi file proses.php
menjadi:
<?php
echo 'Nama : ' . $_POST['nama'] . '<br/>';
echo 'Email : ' . $_POST['email'];
echo '<pre>'; print_r($_POST);
Ketika kita klik tombol submit, maka hasil yang kita peroleh adalah:
III. Mengirim dan Menangkap Data Dengan File Yang Sama
Sejauh ini, kita mengirim dan menangkap data pada dua file yang berbeda, yaitu form.php
untuk mengirim data, dan proses.php
untuk menangkap data.
Dalam praktek, untuk mengirim dan menangkap data seringnya kita gunakan file yang sama, sehingga lebih praktis. Untuk mengirim dan menangkap data form denga file yang sama, caranya, kosongkan nilai pada atribut action, misal action=""
Misal, pada folder form, kita buat file user.php
dengan script sebagai berikut:
<h1>Form HTML Dengan PHP</h1>
<form action="" method="get">
<div>
<label>Nama</label><input type="text" name="nama" value="<?=isset($_POST['nama']) ? $_POST['nama'] : ''?>"/>
</div>
<div>
<label>Email</label><input type="text" name="email" value="<?=isset($_POST['email']) ? $_POST['email'] : ''?>"/>
</div>
<input type="submit" name="submit" value="Simpan"/>
</form>
<?php
if (isset($_POST['submit'])) {
echo 'Nama Anda : ' . $_POST['nama'] . '<br/>';
echo 'Email Anda : ' . $_POST['email'];
}?>
Penjelasan:
- Pada baris 4, kita buat ternary operator
<?=isset($_POST['nama']) ? $_POST['nama'] : ''?>
jika di klik submit, statemen ini akan mencetak nama yang diisikan user, hal yang sama berlaku pada email (baris 7) - Selanjutnya, pada baris 12, kita tes apakah variabel post memiliki index
submit
, jika ya, artinya ada data yang dikirim, selanjutnya kita cetak nama dan email yang diinput oleh user
IV. Menampilkan Hasil Input Form HTML dengan PHP
Terdapat berbagai jenis elemen untuk mengirim data menggunakan Form HTML, diantaranya elemen <input>
, <select>
, dan <textarea>
.
Elemen input memiliki beberapa type, diantaranya text
, checkbox
, dan radio
masing masing type ini berbeda cara penanganannya.
Agar pembahasan tidak terlalu panjang, tutorial tentang bagaimana cara menampilkan hasil input form HTML dengan PHP dapat diikuti pada artikel:
Pada artikel terebut kita akan membahas cara membuat form beserta penanganan data POST. Output yang dihasilkan seperti tampak pada gambar berikut:
Pada gambar diatas:
- Ketika disubmit, elemen input akan tetap berisi data yang telah diinput, dipilih, dan dicentang oleh user.
- Kita uji apakah elemen input, terutama elemen checkbox ada yang dicentang atau tidak, karena untuk mengetahui apakah checkbox dicentang atau tidak, teknik pengujiannya agak berbeda.
Demo Form: Form HTML Pada PHP
Download Source Code: View Source Code
Demikian pembahasan mengenai cara menghubungkan form HTML dengan PHP, semoga bermanfaat.
Lebih dalam mengenai GET dan POST: Memahami GET dan POST dan HTTP
Subscibe Now
Suka dengan artikel di Jagowebdev.com? jangan sampai ketinggalan, segera join ke milis kami untuk update informasi terbaru dari Jagowebdev.com
36 Feedback dari pembaca
Bagaimana ya caranya supaya data form yang diisi masuk ke dalam text atau terkirim ke email ??
Masuk ke dalam text maksudnya disimpan dalam bentuk file .txt mas?
Untuk mengirim email bisa menggunakan library PHP Mailer
gimana ya mas caranya setelah submit itu langsung ke halaman yang ditentukan ??
Di tag form bagian action nya diisi halaman yang diinginkan mas, misal
Assalamualaikum
Gan tahu caranya memasukan gambar/logo ke PDF berbasis web ga ?
Termiakasih
Wa’alaykum salam
Coba dibaca manual library PDF yang digunakan mas….
saya mau tampilin data dari combobox berantai, saya pake post, trus saya pake js chained, jd ketika blm pilih combobox yg pertama, combobox selanjutnya nonaktif..jd ketika tampil data error krn combobox ga aktif, sedangkan saya mau filter dr 1 combobox aja,,gimana ya mas.. mau post codingan takut kepanjangan ,,hehee
Apakah maksudnya seperti di demo ini mbak?
http://jagowebdev.com/wp-content/demo/json-pada-javascript/json-local-dynamic.php
Saya pakai ajax get. Untuk multilevel dropdown tidak perlu menggunakan post.
Bagimana caranya menampilkkan Form Isian Pendaftaran pada data PHP kedalam website yang kita kelola pak. data php sudah saya isi dan siapkan. namun saya kebingungan hosting nya. terima kasih
Kalau hostingnya tinggal berlangganan hosting mas, bisa di googling “Jasa penyedia hosting” selanjutnya minta login cpanelnya dan tempatkan file PHP nya di folder public_html
keren bos,cukup membantu
Terima kasih masss…
pak saya mau tanya, saya ingin membuat form tapi ketika form tersebut di submit, maka data yang tadi di isi akan otomatis tersimpan dalam bentuk file .txt, itu caranya gimana ya? saya bingung
Itu tinggal ditulis ke file txt mas, paka fungsi fopen(), fwrite(), dan fclose() atau fungsi file_put_contents()
gimana yah cara nya supya hasil dari form nya di tampilkan di dalam form jg tapi form yang berbeda??
Itu datanya hasil form sebelumnya ditangkap terus dimasukkan di form yang lain mas, misal
Mas mau brtanya, saya ingin menyambungkan form login dengan aplikasi yang sudah saya buat. Tapi saya buat dengan 2 folder, 1 untuk aplikasi namanya data karyawan, 1 lagi folder untuk loginnya. Bagaimana cara untuk menyambungkan 2 folder itu dimana tampilan 1 itu form login dan setelah berhasil login akan direct langsung ke aplikasi kita?
Mohon bantuannya. Thanks
Setelah berhasil login, tinggal di redirect mas, menggunakan fungsi header();
permisi, kalau seandainya hasil dari form ny kita kirimkan ke halaman web online itu bagaimana ?
Tidak masalah mas, tinggal bagian action pada form nya diarahkan ke web dimaksud
Pak, mau nanya gimana caranya menggunakan methode POST kalau kita tidak menggunakan form, tapi menggunakan gambar, serta gambar itu memiliki link, jadi pas di klik langsung terhubung ke halaman lainnya yang akan memunculkan data dari database, yah seperti website film gitu pak.
Kalau seperti itu mending menggunakan GET mas, karena tidak ada data yang diubah, coba baca ini Memahami GET dan POST Pada PHP dan HTTP
Pak mau tanya
Kalau mau pindah halaman dengan 2 kondisi
Cth: sy px tabel informasi tagihan. Dalam kolom status ada lunas dan tagih.
Jika status lunas maka lanjut ke informasi lunas.php
Jika status tagih maka lanjut ke tagih.php
Itu perlu menggunakan parameter di url mas, misal http://localhost/?halaman=tagih
Maka di index.php maka kita buat:
Jika saya submit trs keluar form baru tp form baru itu lgsg minimize, itu kenapa ya?ada yg perlu di seting lg?gmn cara nya biar lgsg muncul dan tampil paling depan?
Itu di web atau apa mas?
Saya sudah buat form php dan sudah konek ke phpmyadmin dengan localhost.
Kalo saya mau form tersebut bisa dishare dan diakses pelanggan gimana ya?
Thanks
Harus sewa domain dan hosting mas
kalo form kaya brainly di ajukan pertanyaan gimana ya scripnya…
thanks
Saya belum tahu seperti apa mas form nya
bagaimana caranya bikin halaman download 2 langkah dengan method get?
Maaf maksudnya bagaimana ya mas?
“Kita uji apakah elemen input, terutama elemen checkbox ada yang dicentang atau tidak, karena untuk mengetahui apakah checkbox dicentang atau tidak, teknik pengujiannya agak berbeda”
Pak ,, Saya Stack di output checkbox,, coba ini itu selalu error .
kalau ingin tidak error saya centang semua, cuma kalau saya centang hanya satu pasti array ada yg error.
cara agar yg dicentang sukses di output seperti gambar yang terakhir bagaimana pak ??
Mohon pencerahannya paaakk ..
3 Hari 2 malam kurang tidur cuma cari masalah itu ..
Terima kasih Pak..
Semoga Bapak respon.
Sudah saya update artikelnya mas, sudah ada link demonya bisa dipelajari disitu
saya mau buat spinner dengan sistem kupon,itu gimana caranya input data yang wajib diisi tanpa harus ganti di file js nya ya? dan sy mau bikin kupon itu hanya 1x pakai.mohon bantuaanya mas..
Maaf saya belum paham maksud pertanyaan nya mas