Pemrosesan Formulir dalam Satu File PHP
Dalam pelajaran sebelumnya, formulir kita ditempatkan
pada satu halaman, tetapi dikirim ke halaman lain.
Sebenarnya hal ini tidak wajib. Jika atribut
action dibiarkan kosong atau dihilangkan
sama sekali, maka formulir akan dikirim ke
halaman yang sama.
Bagaimana cara kerjanya: pada kunjungan pertama ke halaman, kita akan mengisi formulir dengan data dan menekan tombol. Setelah itu, halaman akan dimuat ulang dan kodenya akan dijalankan lagi, tetapi kali ini dengan data formulir.
Mari kita lihat contohnya. Misalkan kita memiliki formulir dan pemrosesannya dalam satu file:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
Pada kunjungan pertama ke halaman, fungsi var_dump
akan menampilkan array kosong. Dan setelah pengiriman formulir,
ia akan menampilkan data formulir. Artinya, pertama kali
$_GET akan kosong, dan kedua kali
- akan berisi data formulir.
Hal ini dapat menyebabkan masalah. Misalnya, kita akan memasukkan angka ke dalam formulir dan ingin menampilkan jumlah angka-angka tersebut di layar:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
echo $_GET['test1'] + $_GET['test2'];
?>
Dalam kasus ini, pada kunjungan pertama ke halaman,
kita akan melihat error PHP, terkait dengan fakta bahwa
array $_GET kosong, sementara kita mengakses
elemen-elemennya.
Perlu dikatakan di sini bahwa error mungkin tidak muncul di browser Anda. Dalam hal ini, periksa apakah penampilan error PHP diaktifkan, dan pastikan juga bahwa ini adalah kunjungan pertama Anda ke halaman dan tidak ada data formulir di address bar.
Mari kita perbaiki masalahnya. Untuk melakukan ini, tambahkan kondisi di mana kita akan memeriksa apakah formulir telah dikirim.
Misalnya, kita dapat memeriksa $_GET
apakah tidak kosong. Jika $_GET tidak kosong -
berarti formulir telah dikirim dan kita dapat melakukan
penjumlahan. Sebaliknya, ini masih
kunjungan pertama ke halaman dan penjumlahan tidak akan
dilakukan. Jadi, inilah kode yang diperbaiki:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
if (!empty($_GET)) {
echo $_GET['test1'] + $_GET['test2'];
}
?>
Tanyakan kepada pengguna nama belakang, nama depan, dan nama tengah. Setelah pengiriman formulir, tampilkan data yang dimasukkan pada layar.