2011-10-04 25 views
15

Tôi đang cố gắng tạo một biểu mẫu bằng cách sử dụng PHP và tôi không thể tìm thấy một hướng dẫn về những gì tôi cần để Id nghĩ hỏi tại đây.Nhận dữ liệu POST từ nhiều hộp kiểm?

Tôi có một tùy chọn hộp kiểm nhiều trên trang của mình ...

<li> 
    <label>What service are you enquiring about?</label> 
    <input type="checkbox" value="Static guarding" name="service">Static guarding<br> 
    <input type="checkbox" value="Mobile Patrols" name="service">Mobile Patrols<br> 
    <input type="checkbox" value="Alarm response escorting" name="service">Alarm response escorting<br> 
    <input type="checkbox" value="Alarm response/ Keyholding" name="service">Alarm response/ Keyholding<br> 
    <input type="checkbox" value="Other" name="service">Other<input type="hidden" value="Other" name="service"></span> 
    </li> 

Tôi không chắc chắn tuy nhiên làm thế nào để thu thập tất cả checkbox giá trị sử dụng phương thức POST?

nếu tôi sử dụng

$service = $_POST['service']; 

tôi chỉ nhận được 'khác' trở

Trả lời

43

Tên các lĩnh vực như service[] thay vì service, sau đó bạn sẽ có thể truy cập vào nó như mảng. Sau đó, bạn có thể áp dụng các chức năng thường xuyên để các mảng:

  • Kiểm tra xem một giá trị nhất định được chọn:

    if (in_array("Other", $_POST['service'])) { /* Other was selected */} 
    
  • Nhận một chuỗi xuống dòng được tách riêng với tất cả các tùy chọn đã chọn:

    echo implode("\n", $_POST['service']); 
    
  • Lặp qua tất cả các hộp kiểm đã chọn:

    foreach ($_POST['service'] as $service) { 
        echo "You selected: $service <br>"; 
    } 
    
-1
<input type="checkbox" value="Other" name="service">Other<input type="hidden" value="Other" name="service"></span> 

Bạn có trường nhập ẩn có cùng tên với hộp kiểm. Các trường "later" có cùng tên với trường trước đó sẽ ghi đè lên các giá trị của trường trước đó. Điều này có nghĩa là biểu mẫu của bạn, như được đăng ở trên, LUÔN LUÔN sẽ gửi service=Other.

Với cách phân biệt câu hỏi của bạn trong html, có vẻ như bạn muốn nút radio, cho phép chỉ MỘT trong số một nhóm các trường cùng tên được chọn. Hộp kiểm là tình huống "VÀ", các nút radio tương ứng với "HOẶC"

3

Hiện tại, nó chỉ đánh dấu lần nhập ẩn cuối cùng của bạn. Tại sao bạn có đầu vào ẩn ở đó? Nếu bạn muốn thu thập thông tin nếu hộp "Khác" được chọn, thì bạn phải ẩn

<input type="text" name="other" style="diplay:none;"/> 

và bạn có thể hiển thị nó bằng javascript khi hộp "Khác" được chọn. Một cái gì đó như thế.

Chỉ cần làm cho các dịch vụ tên thuộc tính []

<li> 
<label>What service are you enquiring about?</label> 
<input type="checkbox" value="Static guarding" name="service[]">Static guarding<br> 
<input type="checkbox" value="Mobile Patrols" name="service[]">Mobile Patrols<br> 
<input type="checkbox" value="Alarm response escorting" name="service[]">Alarm response escorting<br> 
<input type="checkbox" value="Alarm response/ Keyholding" name="service[]">Alarm response/ Keyholding<br> 
<input type="checkbox" value="Other" name="service[]">Other</span> 
</li> 

Sau đó, trong PHP, bạn có thể truy cập vào nó như vậy

$service = $_POST['service']; 
echo $service[0]; // Output will be the value of the first selected checkbox 
echo $service[1]; // Output will be the value of the second selected checkbox 
print_r($service); //Output will be an array of values of the selected checkboxes 

vv ...

Các vấn đề liên quan