⊗ppPmFmChcN 307 of 447 menu

Các sắc thái khi sử dụng checkbox trong PHP

Giả sử trong biểu mẫu của chúng ta chỉ có một checkbox:

<form action="" method="GET"> <input type="checkbox" name="flag"> <input type="submit"> </form>

Giả sử mã xử lý biểu mẫu của chúng ta trông như thế này:

<?php if (!empty($_GET)) { // nếu biểu mẫu đã được gửi if (isset($_GET['flag'])) { // nếu checkbox được đánh dấu echo 'đã đánh dấu'; } else { echo 'không được đánh dấu'; } } ?>

Chúng ta sẽ gặp phải vấn đề - nếu checkbox không được đánh dấu, thì, vì trong biểu mẫu không có phần tử nào khác ngoài checkbox, mảng $_GET sẽ rỗng. Điều này có nghĩa là trong mã xử lý biểu mẫu, chúng ta sẽ không rơi vào điều kiện if đầu tiên, kiểm tra việc biểu mẫu đã được gửi hay chưa.

Để giải quyết vấn đề này, người ta sử dụng một thủ thuật đặc biệt: tạo một trường input ẩn có cùng tên với checkbox của chúng ta. Trong đó, giá trị của input ẩn được đặt là số không, còn giá trị của checkbox là số một:

<form action="" method="GET"> <input type="hidden" name="flag" value="0"> <input type="checkbox" name="flag" value="1"> <input type="submit"> </form>

Trong trường hợp này, kết quả sẽ như sau. Nếu checkbox không được đánh dấu, chỉ có giá trị của input ẩn được gửi lên máy chủ. Nếu checkbox được đánh dấu, cả hai giá trị có cùng một tên sẽ được gửi lên máy chủ. Nhưng, vì giá trị của checkbox sẽ là thứ hai, nó sẽ ghi đè lên giá trị đầu tiên.

Vậy, bây giờ checkbox của chúng ta sẽ gửi lên máy chủ giá trị là không hoặc một:

<?php var_dump($_GET['flag']); // '0' hoặc '1' ?>

Hãy sử dụng điều này trong phép kiểm tra của chúng ta:

<?php if (!empty($_GET)) { if ($_GET['flag'] === '1') { echo 'đã đánh dấu'; } else { echo 'không được đánh dấu'; } } ?>

Sử dụng checkbox để hỏi người dùng xem họ đã đủ 18 tuổi hay chưa. Nếu đủ, cho phép họ truy cập trang web, còn nếu chưa - thì không cho phép.

Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối