2011-01-07 32 views
6

Làm cách nào để tôi có thể nhận được tên hoặc id của nhiều hộp kiểm được chọn khi gửi, sử dụng PHP? Sau đây là mẫu ví dụ. Cảm ơn.nhận nhiều hộp kiểm tên/id bằng php

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
    <input type="checkbox" name="orange" id="orange"> 
    <input type="checkbox" name="apple" id="apple"> 
    <input type="checkbox" name="sky" id="sky"> 
    <input type="checkbox" name="sea" id="sea"> 
    <br> 
    <br> 
    <input type="submit" name="Submit" value="Submit"> 
</form> 

Trả lời

18

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:

  1. 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ị.
  2. Đặt cho mỗi hộp kiểm tên khác nhau và một giá trị.
  3. Đặ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().

4

Bạn sẽ không nhận được id nhưng những cái tên sẽ chỉ kết hợp trong $_POST mảng (và $_REQUEST). LƯU Ý: Chúng sẽ chỉ có sẵn trong mảng nếu chúng được khách hàng kiểm tra.

if ($_POST['oragne'] == 'on')

9

Bạn cần phải cung cấp cho các đầu vào cùng tên:

<input type="checkbox" name="selection[]" value="orange"> 
<input type="checkbox" name="selection[]" value="apple"> 
<input type="checkbox" name="selection[]" value="sky"> 
<input type="checkbox" name="selection[]" value="sea"> 

Sau đó lặp qua các $ _POST [ 'lựa chọn'] mảng trong PHP.

+0

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] "' –

+0

đã 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. –

+0

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 đó. –

2

Bạn có thể thiết lập chúng để gửi đến PHP như mảng, nếu bạn xây dựng chúng tương tự như dưới đây:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
    <input type="checkbox" name="box_group_1[oragne]" id="oragne"> 
    <input type="checkbox" name="box_group_1[apple]" id="apple"> 
    <input type="checkbox" name="box_group_1[sky]" id="sky"> 
    <input type="checkbox" name="box_group_1[sea]" id="sea"> 
    <br> 
    <br> 
    <input type="submit" name="Submit" value="Submit"> 
</form> 
<?php 
print_r($_POST['box_group_1']); 
?> 
Các vấn đề liên quan