2010-03-09 37 views
198

Tôi có một biểu mẫu html trong đó có một hộp danh sách lựa chọn mà từ đó bạn có thể chọn nhiều giá trị vì nhiều thuộc tính của nó được đặt thành nhiều. Xem xét phương thức hình thức là 'GET'. Mã html cho các hình thức như sau:Làm thế nào để nhận được nhiều giá trị được lựa chọn của hộp chọn trong php?

<html> 
 
    <head> 
 
    <title>Untitled Document</title> 
 
    </head> 
 
    <body> 
 
    <form id="form1" name="form1" method="get" action="display.php"> 
 
     <table width="300" border="1"> 
 
     <tr> 
 
      <td><label>Multiple Selection </label>&nbsp;</td> 
 
      <td><select name="select2" size="3" multiple="multiple" tabindex="1"> 
 
      <option value="11">eleven</option> 
 
      <option value="12">twelve</option> 
 
      <option value="13">thirette</option> 
 
      <option value="14">fourteen</option> 
 
      <option value="15">fifteen</option> 
 
      <option value="16">sixteen</option> 
 
      <option value="17">seventeen</option> 
 
      <option value="18">eighteen</option> 
 
      <option value="19">nineteen</option> 
 
      <option value="20">twenty</option> 
 
      </select> 
 
      </td> 
 
     </tr> 
 
     <tr> 
 
      <td>&nbsp;</td> 
 
      <td><input type="submit" name="Submit" value="Submit" tabindex="2" /></td> 
 
     </tr> 
 
     </table> 
 
    </form> 
 
    </body> 
 
    </html>

Tôi muốn hiển thị các giá trị được chọn trong hộp chọn danh sách trên trang display.php. Vậy các giá trị được chọn được truy cập như thế nào trên trang display.php sử dụng mảng $_GET[].

+0

Bạn có được phép đổi tên 'select2' không? Hay ai đó kiểm soát biểu mẫu? –

Trả lời

335

Nếu bạn muốn PHP để điều trị $_GET['select2'] như một loạt các tùy chọn chỉ cần thêm dấu ngoặc vuông để tên của chọn yếu tố như thế này: <select name="select2[]" multiple …

Sau đó, bạn có thể acces mảng trong kịch bản PHP của bạn

<?php 
header("Content-Type: text/plain"); 

foreach ($_GET['select2'] as $selectedOption) 
    echo $selectedOption."\n"; 

$_GET có thể được thay thế bằng $_POST tùy thuộc vào giá trị <form method="…".

+1

đối với tôi có vẻ như, trình duyệt đó không gửi thông số bài đăng/nhận được nếu không có gì được chọn trong nhiều lựa chọn. làm thế nào bạn có thể buộc phải có một mảng trống, thay vào đó? – emfi

+0

Tôi đã phải sử dụng $ _POST ['select2'] thay vì $ _GET ['select2'] –

+1

Đây là câu trả lời cũ, nhưng đây là một câu trả lời sai lầm! (name = "select2 []") là chính xác như @Coufu đã trả lời! – meYnot

152

Thay đổi:

<select name="select2" ... 

Để:

<select name="select2[]" ... 
+0

Trong một số trường hợp , tại sao điều này vẫn không hoạt động? Tôi không thành công với điều này. –

+0

Đây chỉ là điểm! –

32

Sử dụng các chương trình sau đây để chọn nhiều giá trị từ trong hộp chọn.

multi.php

<?php 
print <<<_HTML_ 
<html> 
     <body> 
       <form method="post" action="value.php"> 
         <select name="flower[ ]" multiple> 
           <option value="flower">FLOWER</option> 
           <option value="rose">ROSE</option> 
           <option value="lilly">LILLY</option> 
           <option value="jasmine">JASMINE</option> 
           <option value="lotus">LOTUS</option> 
           <option value="tulips">TULIPS</option> 
         </select> 
         <input type="submit" name="submit" value=Submit> 
       </form> 
     </body> 
</html> 
_HTML_ 

?> 

value.php

<?php 
foreach ($_POST['flower'] as $names) 
{ 
     print "You are selected $names<br/>"; 
} 

?> 
30

Bạn có thể sử dụng mã này để lấy các giá trị từ nhiều chọn combo box

HTML:

<form action="c3.php" method="post"> 
    <select name="ary[]" multiple="multiple"> 
    <option value="Option 1" >Option 1</option> 
    <option value="Option 2">Option 2</option> 
    <option value="Option 3">Option 3</option> 
    <option value="Option 4">Option 4</option> 
    <option value="Option 5">Option 5</option> 
    </select> 
    <input type="submit"> 
</form> 

PHP:

<?php 
$values = $_POST['ary']; 

foreach ($values as $a){ 
    echo $a; 
} 
?> 
5

này sẽ hiển thị các giá trị được chọn:

<?php 

    if ($_POST) { 
     foreach($_POST['select2'] as $selected) { 
      echo $selected."<br>"; 
     } 
    } 

?> 
+1

Điều này có nhiều sai sót: 1) OP sử dụng phương thức GET; 2) nó thiếu bước quan trọng nhất để gắn các dấu ngoặc vuông vào tên phần tử biểu mẫu, như 'name =" select2 [] "'. – charlie

0

tôi khắc phục vấn đề của tôi với javascript + HTML. Đầu tiên tôi kiểm tra được lựa chọn tùy chọn và lưu nó trong một lĩnh vực tiềm ẩn của hình thức của tôi:

for(i=0; i < form.select.options.length; i++) 
    if (form.select.options[i].selected) 
    form.hidden.value += form.select.options[i].value; 

Tiếp theo, tôi nhận được qua đường bưu điện lĩnh vực đó và nhận được tất cả các chuỗi ;-) Tôi hy vọng nó sẽ được làm việc cho ai đó hơn . Cảm ơn tất cả.

+1

Điều này có nhiều sai sót: 1) tùy thuộc vào JavaScript đang có sẵn; 2) không tách các giá trị khi nối chúng vào một chuỗi đơn, do đó làm cho nó không thể tách chuỗi thành các giá trị sau này. – charlie

+0

Câu trả lời này mang lại cho tôi hướng đi cần thiết. Cám ơn. –

4
// CHANGE name="select2" TO name="select2[]" THEN 
<?php 
    $mySelection = $_GET['select2']; 

    $nSelection = count($MySelection); 

    for($i=0; $i < $nSelection; $i++) 
    { 
     $numberVal = $MySelection[$i]; 

     if ($numberVal == "11"){ 
     echo("Eleven"); 
     } 
     else if ($numberVal == "12"){ 
     echo("Twelve"); 
     } 
     ... 

     ... 
    } 
?> 
0
foreach ($_POST["select2"] as $selectedOption) 
{  
    echo $selectedOption."\n"; 
} 
+0

điều này không hoạt động rõ ràng. –

6
<html> 
<head> 
<title>Untitled Document</title> 
</head> 
<body> 
<form id="form1" name="form1" method="get" action="display.php"> 
    <table width="300" border="1"> 
    <tr> 
     <td><label>Multiple Selection </label>&nbsp;</td> 
     <td><select name="select2[]" size="3" multiple="multiple" tabindex="1"> 
     <option value="11">eleven</option> 
     <option value="12">twelve</option> 
     <option value="13">thirette</option> 
     <option value="14">fourteen</option> 
     <option value="15">fifteen</option> 
     <option value="16">sixteen</option> 
     <option value="17">seventeen</option> 
     <option value="18">eighteen</option> 
     <option value="19">nineteen</option> 
     <option value="20">twenty</option> 
     </select> 
     </td> 
    </tr> 
    <tr> 
     <td>&nbsp;</td> 
     <td><input type="submit" name="Submit" value="Submit" tabindex="2" /></td> 
    </tr> 
    </table> 
</form> 
</body> 
</html> 

Bạn có thể lặp lại nó trực tiếp như thế này

foreach ($_GET['select2'] as $value) 
    echo $value."\n"; 

hoặc bạn có thể làm điều đó như thế này

$selectvalue=$_GET['select2']; 
foreach ($selectvalue as $value) 
    echo $value."\n"; 
0

Bạn có thể làm như thế này quá. Nó làm việc cho tôi.

<form action="ResultsDulith.php" id="intermediate" name="inputMachine[]" multiple="multiple" method="post"> 
    <select id="selectDuration" name="selectDuration[]" multiple="multiple"> 
     <option value="1 WEEK" >Last 1 Week</option> 
     <option value="2 WEEK" >Last 2 Week </option> 
     <option value="3 WEEK" >Last 3 Week</option> 
     <option value="4 WEEK" >Last 4 Week</option> 
      <option value="5 WEEK" >Last 5 Week</option> 
      <option value="6 WEEK" >Last 6 Week</option> 
    </select> 
    <input type="submit"/> 
</form> 

Sau đó lấy lựa chọn nhiều từ sau PHP mã dưới đây. Nó in nhiều giá trị đã chọn cho phù hợp.

$shift=$_POST['selectDuration']; 

print_r($shift); 
Các vấn đề liên quan