2010-12-12 44 views
5

Trong danh sách thả xuống của tôi, tôi có hai giá trị khác nhau cho mỗi tùy chọn. Làm thế nào tôi có thể lấy cả hai? Hãy để tôi minh họa những gì tôi có ý nghĩa.Danh sách thả xuống nhận được PHP chọn giá trị tùy chọn

<select name="my_ddl"> 
    <option value="<?php $value_Id ?>"><?php $value_text ?></option> 
    <option value="<?php $value_Id ?>"><?php $value_text ?></option> 
</select> 

Khi biểu mẫu được đăng, tôi muốn có thể nhận cả $ value_id và $ value_text của tùy chọn đã chọn. Tôi có thể làm cái này như thế nào?

$ _POST ['my_ddl'] chỉ nhận được một giá trị không phải cả hai.

Trong asp.net tôi có thể làm điều này đơn giản bằng cách tham khảo my_ddl.Value và my_ddl.Text.

Cảm ơn bạn!

Trả lời

5

Nghiêm túc, điều này là không thể.

Những gì bạn có thể làm là sử dụng một delimiter trong value thuộc tính của bạn:

<select name="my_ddl"> 
    <option value="<?php echo $value_Id ?>|<?php echo $value_text ?>"><?php echo $value_text ?> 
    </option> 
</select> 

Và ...

<?php  
    list($id, $text) = explode('|', $_POST['my_ddl']); 
    //... 
?> 
+0

Cảm ơn bạn! Điều này làm việc tuyệt vời. Rất đơn giản, tôi không thể tin được. –

0

Nếu bạn đang sử dụng PHP để cư văn bản cho <option> sau đó bạn có thể chỉ cần nhìn vào giá trị trên máy chủ. Có lẽ bạn chỉ cần sử dụng $ value_id để tra cứu văn bản trong bảng cơ sở dữ liệu?

Nếu không, bạn có thể bao gồm trường ẩn trên biểu mẫu và sử dụng JavaScript để cập nhật trường ẩn đó với văn bản mỗi lần chọn giá trị mới.

0

Bạn không thể nhận được value_text từ dữ liệu POST. Một giải pháp là điền vào trường ẩn sau khi chọn tùy chọn thông qua JavaScript.

3

Một cách kỳ lạ để làm việc đó là:

<select name="my_ddl"> 
    <option value="<?php echo $value_Id ?>[<?php echo $value_text ?>]"> 
    <?php echo $value_text ?> 
    </option> 
</select> 

Sau đó, khi bạn xử lý nó, bạn có thể làm điều này hoặc thậm chí có một cái gì đó đơn giản hơn:

foreach ($_POST['my_dd1'] as $value_Id => $value_text) { 
    $value_Id = $value_Id; 
    $value_text = $value_text; 
} 

Vì php xử lý các [] như ý nghĩa chuỗi là một mảng và vì vậy bạn ngay lập tức có một mảng kết hợp. Tôi đồng ý mặc dù rằng nếu bạn đặt nó ở nơi đầu tiên bạn nên có thể chỉ cần nhìn nó lên một lần nữa trong mã thay vì dựa vào điều này.

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