giá trị Checkbox được gửi từ một hình thức duy nhất nếu được chọn. Hơn nữa, đó là thuộc tính tên mà đếm, không phải là ID.
Có một số cách xử lý hộp kiểm trong PHP:
- Cho tất cả các hộp kiểm cùng tên theo sau là một cặp dấu ngoặc vuông, vì vậy toàn bộ bộ được coi là một mảng. Trong trường hợp này, hãy cung cấp cho mỗi hộp kiểm một giá trị.
- Đặt cho mỗi hộp kiểm tên khác nhau và một giá trị.
- Đặt cho mỗi hộp kiểm một tên khác, nhưng không có giá trị.
Trong mỗi trường hợp, bạn cần kiểm tra sự tồn tại của tên hộp kiểm trong mảng $ _POST.
Ví dụ:
<input type="checkbox" name="color[]" id="orange" value="orange">
<input type="checkbox" name="color[]" id="apple" value="apple">
Để có được giá trị cho các hộp kiểm sau:
if (isset($_POST['color'])) {
$colors = $_POST['color'];
// $colors is an array of selected values
}
Tuy nhiên, nếu mỗi hộp kiểm có một cái tên khác nhau và một giá trị rõ ràng như thế này:
<input type="checkbox" name="orange" id="orange" value="orange">
<input type="checkbox" name="apple" id="apple" value="apple">
Bạn vẫn cần sử dụng isset():
Nếu bạn không đặt giá trị, giá trị mặc định là "bật", nhưng giá trị mặc định sẽ không nằm trong mảng $ _POST trừ khi nó được chọn, vì vậy bạn vẫn cần sử dụng isset().
Nguồn
2011-01-08 00:38:09
Nếu bạn chỉ cần đặt tên cho chúng giống nhau, điều này sẽ không hoạt động. Bạn cần thiết lập chúng thành mảng: 'name =" selection [index] "' –
đã sửa lỗi ví dụ. Ngoài ra tôi nghĩ bạn có thể loại bỏ chỉ mục và chúng sẽ tự động được lập chỉ mục. –
Có, bạn có thể làm điều đó là tốt, ông đã đặc biệt yêu cầu để bảo tồn các "tên" thuộc tính mặc dù. Chỉ số có thể thay thế điều đó. –