2012-01-31 35 views
53

Tôi có một biểu mẫu phức tạp và tôi hy vọng sẽ đơn giản hóa việc xử lý phía máy chủ (PHP) bằng cách tự nhiên POST một mảng các bộ dữ liệu.ĐĂNG một mảng từ một biểu mẫu HTML mà không cần javascript

Phần đầu tiên của mẫu đại diện cho một tài:

  • Tên
  • Họ
  • Email
  • Địa chỉ
  • vv

Phần thứ hai của biểu mẫu represen ts một Tree:

  • Fruit
  • Chiều cao
  • vv

Vấn đề là tôi cần để có thể POST nhiều Trees cho một đơn tài trong cùng mẫu. Tôi muốn gửi thông tin dưới dạng một Người dùng duy nhất với một mảng Cây nhưng điều này có thể quá phức tạp để thực hiện với biểu mẫu. Điều duy nhất xuất hiện trong đầu là sử dụng javascript để tạo một số thông điệp JSON với một đối tượng User và một mảng các đối tượng Tree. Nhưng nó sẽ là tốt đẹp để tránh javascript để hỗ trợ nhiều người dùng hơn (một số người đã tắt các kịch bản).

+0

có những điều như mảng hình thức http://roshanbh.com.np/2008/08/handling-array-html- form-elements-javascript-php.html – Joseph

+1

Thứ tự đảm bảo mảng có được không? Tôi muốn một mảng các đối tượng Tree có nhiều trường, vì vậy điều này có nghĩa là tôi phải sử dụng nhiều mảng để biểu diễn một Tree và các mảng phải được sắp xếp để tôi có thể tìm ra Tree mà chúng đại diện. – styfle

Trả lời

102

check this one out.

<input type="text" name="firstname"> 
<input type="text" name="lastname"> 
<input type="text" name="email"> 
<input type="text" name="address"> 

<input type="text" name="tree[tree1][fruit]"> 
<input type="text" name="tree[tree1][height]"> 

<input type="text" name="tree[tree2][fruit]"> 
<input type="text" name="tree[tree2][height]"> 

<input type="text" name="tree[tree3][fruit]"> 
<input type="text" name="tree[tree3][height]"> 

nó nên kết thúc như thế này trong $ _POST [] array (định dạng PHP cho dễ hình dung)

$_POST[] = array(
    'firstname'=>'value', 
    'lastname'=>'value', 
    'email'=>'value', 
    'address'=>'value', 
    'tree' => array(
     'tree1'=>array(
      'fruit'=>'value', 
      'height'=>'value' 
     ), 
     'tree2'=>array(
      'fruit'=>'value', 
      'height'=>'value' 
     ), 
     'tree3'=>array(
      'fruit'=>'value', 
      'height'=>'value' 
     ) 
    ) 
) 
+6

Ký tự nào được phép trong lập chỉ mục mảng? Chúng ta có thể sử dụng,.: '@? Ví dụ: 'cây [cây 1] [fr ui_t]' 'cây [cây.1] [fru: it]' 'cây [cây @ 1] [fru, nó]' Chỉ _ là dấu phân cách an toàn trong đặt tên chính? – CoR

+2

sẽ 'cây [] [trái cây]' và 'cây [] [chiều cao]' không hợp lệ để tự động lập chỉ mục mảng? – Wobbles

5

Bạn cũng có thể bài nhiều đầu vào có cùng tên và yêu cầu họ lưu vào một mảng bằng cách thêm dấu ngoặc vuông trống vào tên đầu vào như sau:

<input type="text" name="comment[]" value="comment1"/> 
<input type="text" name="comment[]" value="comment2"/> 
<input type="text" name="comment[]" value="comment3"/> 
<input type="text" name="comment[]" value="comment4"/> 

Nếu bạn sử dụng php:

print_r($_POST['comment']) 

bạn sẽ có được điều này:

Array ([0] => 'comment1' [1] => 'comment2' [2] => 'comment3' [3] => 'comment4') 
Các vấn đề liên quan