Xử lý biểu mẫu trong một tệp PHP
Trong bài học trước, biểu mẫu của chúng ta được đặt
trên một trang và được gửi đến một trang khác.
Trên thực tế, điều này không bắt buộc. Nếu để trống
thuộc tính action hoặc bỏ nó đi
hoàn toàn, thì biểu mẫu sẽ được gửi đến
chính trang này.
Cách thức hoạt động: khi truy cập lần đầu tiên vào trang, chúng ta sẽ điền dữ liệu vào biểu mẫu và nhấn vào nút. Sau đó, trang sẽ được làm mới và mã của nó sẽ được thực thi lại, nhưng lần này đã có dữ liệu từ biểu mẫu.
Hãy xem xét ví dụ. Giả sử chúng ta có một biểu mẫu và phần xử lý của nó trong một tệp:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
Khi truy cập lần đầu tiên vào trang, hàm var_dump
sẽ hiển thị một mảng rỗng. Còn sau khi gửi biểu mẫu,
nó sẽ hiển thị dữ liệu của biểu mẫu. Tức là lần đầu tiên
$_GET sẽ rỗng, và lần thứ hai
- sẽ chứa dữ liệu từ biểu mẫu.
Điều này có thể dẫn đến vấn đề. Ví dụ, giả sử chúng ta nhập các số vào biểu mẫu và muốn hiển thị tổng của các số này ra màn hình:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
echo $_GET['test1'] + $_GET['test2'];
?>
Trong trường hợp này, khi truy cập lần đầu tiên vào trang,
chúng ta sẽ thấy các lỗi PHP, liên quan đến việc
mảng $_GET rỗng, trong khi chúng ta đang truy cập
vào các phần tử của nó.
Cần nói thêm rằng, có thể bạn sẽ không thấy lỗi hiện ra trong trình duyệt. Trong trường hợp đó, hãy kiểm tra xem bạn đã bật hiển thị lỗi PHP chưa, đồng thời đảm bảo rằng đó là lần đầu tiên bạn truy cập trang và trong thanh địa chỉ không có dữ liệu từ biểu mẫu.
Hãy sửa vấn đề này. Để làm vậy, chúng ta thêm một điều kiện, trong đó sẽ kiểm tra xem biểu mẫu đã được gửi hay chưa.
Ví dụ, có thể kiểm tra $_GET xem
có rỗng không. Nếu $_GET không rỗng -
thì biểu mẫu đã được gửi và có thể thực hiện
phép cộng. Ngược lại thì đó vẫn là
lần truy cập đầu tiên vào trang và phép cộng sẽ không được thực hiện.
Vậy, đây là mã đã được sửa:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
if (!empty($_GET)) {
echo $_GET['test1'] + $_GET['test2'];
}
?>
Hãy hỏi người dùng họ, tên và tên đệm. Sau khi gửi biểu mẫu, hãy hiển thị các dữ liệu đã nhập ra màn hình.