Làm cách nào để bạn chuyển nhiều giá trị trong html?

👉 Chà. Xin lưu ý rằng bài đăng này là 14 tuổi. Các quan điểm thể hiện bên trong có thể đã trở nên lỗi thời

Ngày 4 tháng 7 năm 2008

Đôi khi bạn muốn có một biểu mẫu có nhiều "hành động". Chẳng hạn, trong một cửa hàng trực tuyến, bạn muốn liệt kê tất cả các sản phẩm của mình, mỗi sản phẩm được ghép nối với một nút gửi riêng để thêm sản phẩm cụ thể đó vào giỏ hàng

Nhưng làm thế nào bạn có thể, ở phía máy chủ, phân biệt giữa các sản phẩm?

Càng khó khăn hơn khi bạn có nhiều dữ liệu ẩn muốn gửi cùng với tên hoặc id của sản phẩm, nhưng bạn chỉ muốn hiển thị một nút

Có một số cách để đạt được điều này, tất cả đều có ưu và nhược điểm riêng. Dưới đây tôi sẽ liệt kê một số tùy chọn


Nhiều hình thức

Cách dễ nhất để đạt được điều này là sử dụng nhiều biểu mẫu trong mã HTML của bạn, đại loại như thế này

My product

My product

[...]

Điều này hoạt động, bởi vì khi nhấp vào nút, chỉ có một biểu mẫu được gửi, vì vậy bạn sẽ chỉ nhận được các giá trị chính xác ở phía máy chủ

Tuy nhiên nhược điểm là hơi luộm thuộm. Cá nhân tôi không thể nói rằng tôi hài lòng với việc có quá nhiều biểu mẫu khác nhau trong tài liệu HTML của mình

Nút loại "Hình ảnh"

Một giải pháp lý tưởng là sử dụng trường nhập loại "hình ảnh". Tạo một đồ họa dạng nút và viết một phần tử đầu vào như thế này

$hiddenvalues = explode ("|",$_POST["my-product"]);
$product_id = $hiddenvalues[0];
$product_secret = $hiddenvalues[1];
$product_another_secret = $hiddenvalues[2];
0Như bạn có thể thấy, tôi đã lạm dụng thuộc tính
$hiddenvalues = explode ("|",$_POST["my-product"]);
$product_id = $hiddenvalues[0];
$product_secret = $hiddenvalues[1];
$product_another_secret = $hiddenvalues[2];
1 để nhồi nhét tất cả dữ liệu ẩn của mình, ngăn cách bởi các đường dẫn. Về phía máy chủ, tất cả những gì tôi phải làm trong mã PHP của mình là

$hiddenvalues = explode ("|",$_POST["my-product"]);
$product_id = $hiddenvalues[0];
$product_secret = $hiddenvalues[1];
$product_another_secret = $hiddenvalues[2];

để lấy tất cả dữ liệu đã gửi

Tuy nhiên, Internet Explorer 6 sẽ không cho phép. Trình duyệt của Microsoft không gửi dữ liệu chứa bên trong thuộc tính "giá trị" của phần tử đầu vào loại hình ảnh. Xem để biết thêm thông tin bài viết này của Robert Nyman

Chết tiệt

Làm việc với mảng

Một điều tuyệt vời về các biểu mẫu là khả năng gửi các mảng của bạn. Hãy xem xét chút HTML này












Ví dụ: khi nhấp vào một trong các nút, nút "foo", phần sau sẽ được gửi đến máy chủ

Array
(
   [foo] => Array
       (
           [secret] => my hidden value
           [product-id] => 1
           [submit] => Add this product to your cart
       )

   [bar] => Array
       (
           [secret] => my hidden value
           [product-id] => 2
       )
   [baz] => Array
       (
           [secret] => my hidden value
           [product-id] => 3
       )
)

Như bạn có thể thấy, tất cả các mảng đều được gửi, nhưng chỉ có mảng "foo" chứa khóa "gửi". Vì vậy, bạn có thể lặp qua mảng và bất cứ khi nào bạn tìm thấy khóa "gửi", bạn sẽ biết đó là mảng mà người dùng định chọn

Bạn có thể làm như vậy bằng cách sử dụng mã như thế này

foreach ($_POST as $collection) {
	if (array_key_exists ('submit', $collection)) {
		// this is the one we need
		$secret = $collection['secret'];
		$id = $collection['product-id'];
		break;
	}
}

Đây là điều tốt nhất tôi có thể nghĩ ra. Rõ ràng, một nhược điểm có thể xảy ra là gửi nhiều dữ liệu thừa và phải lặp lại tất cả dữ liệu đó

Làm cách nào tôi có thể gửi nhiều tham số trong yêu cầu HTTP GET?

Nhập cùng một URL vào trường văn bản Người đưa thư; . Thậm chí, bạn có thể viết từng tham số và gửi yêu cầu có nhiều tham số .

Chúng ta có thể truyền tham số trong HTML không?

Sử dụng một số kỹ thuật, bạn có thể chuyển một giá trị (được gọi là Tham số) từ trang này sang trang khác để điền sẵn các trường biểu mẫu hoặc hiển thị trên trang HTML.

Việc sử dụng chấp nhận hai giá trị trong biểu mẫu web là gì?

Thuộc tính bội Boolean, nếu được đặt, có nghĩa là điều khiển biểu mẫu chấp nhận một hoặc nhiều giá trị