Theo w3c "Một số hộp kiểm trong biểu mẫu có thể dùng chung tên điều khiển. Ví dụ: hộp kiểm cho phép người dùng chọn nhiều giá trị cho cùng một thuộc tính". Tuy nhiên, nếu bạn làm điều đó, PHP sẽ chỉ lấy giá trị cuối cùng. Ví dụ:Một số hộp kiểm có cùng tên
<?php
if ($_POST) {
echo "<pre>";
print_R($_POST);
echo "</pre>";
}
?>
<form action="" method = "post">
<input type="checkbox" name="pet" value="dog" />Dog<br />
<input type="checkbox" name="pet" value="Cat" />Cat<br />
<input type="checkbox" name="pet" value="bird" />bird<br />
<input type="checkbox" name="pet" value="iguana" />iguana<br />
<input type="submit" />
</form>
Nếu bạn gửi biểu mẫu đó, bạn sẽ thấy chỉ hộp được chọn cuối cùng sẽ được đặt. Trình duyệt gửi tất cả, nhưng chúng ghi đè lên nhau. Vì vậy, việc đặt cùng tên cho một số hộp kiểm có thể gây ra sự cố. Nó luôn luôn như vậy? Tôi dường như nhớ rằng thực sự có thể gửi tất cả các giá trị như một mảng.
Tôi biết rằng bạn chỉ có thể thêm một [] ở phần cuối của tên để tạo ra một mảng các giá trị:
<?php
if ($_POST) {
echo "<pre>";
print_R($_POST);
echo "</pre>";
}
?>
<form action="" method = "post">
<input type="checkbox" name="pet[]" value="dog" />Dog<br />
<input type="checkbox" name="pet[]" value="Cat" />Cat<br />
<input type="checkbox" name="pet[]" value="bird" />bird<br />
<input type="checkbox" name="pet[]" value="iguana" />iguana<br />
<input type="submit" />
</form>
Nhưng w3c không xác định đó. Thành thật mà nói tôi không nhớ nếu tôi luôn luôn sử dụng [] vào cuối tên, nhưng vì một lý do nào đó, tôi nghĩ rằng ở một thời điểm nào đó tôi đã không. Đã có thời gian trong quá khứ khi bạn có thể làm cho nó hoạt động mà không có []?
http://www.w3.org/TR/html401/interact/forms.html#checkbox
Bạn phải sử dụng '[]' và sau đó bạn có thể sử dụng 'in_array' để xác định hộp kiểm nào đã được chọn. Gây phiền nhiễu, nhưng không phải tất cả các hình thức? – thatidiotguy
W3c không xác định điều này vì nó là 'php' cụ thể (và có thể là các ngôn ngữ khác) và không liên quan đến w3c. Các ngôn ngữ khác không có yêu cầu này. Như bạn đã nói, trình duyệt gửi tất cả các giá trị. –
Tôi thấy cả hai điểm của bạn. Cảm ơn. Và vâng, mọi hình thức đều gây phiền nhiễu. – Buzu