Pemprosesan Borang dalam Satu Fail PHP
Dalam pelajaran sebelumnya, borang kami diletakkan
pada satu halaman, dan dihantar ke halaman lain.
Sebenarnya, ini tidak semestinya. Jika atribut
action dibiarkan kosong atau dibuang
langsung, borang akan dihantar ke halaman
yang sama.
Bagaimana ia akan berfungsi: pada kali pertama masuk ke halaman, kami akan mengisi borang dengan data dan menekan tompok. Selepas itu, halaman akan disegarkan semula dan kodnya akan dilaksanakan sekali lagi, tetapi kali ini dengan data borang.
Mari kita lihat contoh. Katakan kita mempunyai borang dan pemprosesannya dalam satu fail:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
Pada kali pertama masuk ke halaman, fungsi var_dump
akan memaparkan array kosong. Dan selepas borang dihantar
ia akan memaparkan data borang. Iaitu, kali pertama
$_GET akan kosong, dan kali kedua
- akan mengandungi data borang.
Ini boleh menyebabkan masalah. Katakan, sebagai contoh, kami akan memasukkan nombor ke dalam borang dan mahu memaparkan jumlah nombor-nombor ini pada skrin:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
echo $_GET['test1'] + $_GET['test2'];
?>
Dalam kes ini, pada kali pertama masuk ke halaman
kita akan melihat ralat PHP, berkaitan dengan fakta bahawa
array $_GET kosong, dan kita mengakses
elemen-elemennya.
Perlu disebut di sini bahawa ralat mungkin tidak muncul dalam pelayar anda. Dalam kes ini, periksa sama ada output ralat PHP dihidupkan, dan juga pastikan bahawa ini adalah kali pertama anda masuk ke halaman dan tiada data borang dalam bar alamat.
Mari kita betulkan masalah ini. Untuk melakukan ini, mari tambahkan syarat, di mana kita akan memeriksa sama ada borang telah dihantar.
Sebagai contoh, anda boleh menyemak $_GET
untuk ketidakkosongan. Jika $_GET tidak kosong -
maka borang telah dihantar dan anda boleh melaksanakan
penambahan. Jika tidak, ini masih lagi
kali pertama masuk ke halaman dan penambahan tidak akan
dilaksanakan. Jadi, berikut adalah kod yang dibetulkan:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
if (!empty($_GET)) {
echo $_GET['test1'] + $_GET['test2'];
}
?>
Tanya pengguna untuk nama keluarga, nama pertama dan nama bapa. Selepas borang dihantar, paparkan data yang dimasukkan pada skrin.