Làm thế nào để có được nhiều giá trị được chọn của hộp chọn trong php?


240

Tôi có một dạng html có hộp danh sách chọn 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 biểu mẫu là 'NHẬN'. Mã html cho biểu mẫu như sau:

<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 danh sách chọn trên trang display.php. Vậy làm thế nào là các giá trị được chọn truy cập trên trang display.php bằng cách sử dụng $_GET[]mảng.


Bạn có được phép đổi tên select2không? Hay người khác kiểm soát các hình thức?
Damian Yerrick

Câu trả lời:


393

Nếu bạn muốn PHP coi $_GET['select2']là một mảng các tùy chọn, chỉ cần thêm dấu ngoặc vuông vào tên của phần tử chọn như thế này:<select name="select2[]" multiple …

Sau đó, bạn có thể nhấn vào mảng trong tập lệnh PHP của bạn

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

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

$_GETcó thể được thay thế bởi $_POSTtùy thuộc vào <form method="…"giá trị.


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

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

2
Đây là một câu trả lời cũ, nhưng đây là một câu trả lời sai lệch! (name = "select2 []") đúng như @Coufu đã trả lời!
chú ý

@emfi Nếu bạn muốn gửi tham số thì phải có giá trị; bạn có thể thêm "đã chọn" vào thẻ (tức là <option value="" selected></option>) nếu bạn có thể chấp nhận có tùy chọn mặc định trong danh sách. Bạn cũng có thể sử dụng CSS để làm cho tùy chọn mặc định trở nên vô hình; tuy nhiên nếu ai đó chọn một tùy chọn khác, sau đó bỏ chọn tất cả mọi thứ .. bạn có thể kết thúc mà không có giá trị nào được trả về. Vì vậy, .. không có giải pháp sạch bằng cách sử dụng GET.
apraetor

1
Thêm [] hoạt động cho tôi cả trên POST và GET, nhưng URI kết quả (với GET) thì quá khủng khiếp (..multiselect.php? Ms% 5B% 5D = 1 & ms% 5B% 5D = 2)
Teson

182

Thay đổi:

<select name="select2" ...

Đến:

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

Trong một số trường hợp, tại sao điều này vẫn không thể làm việc? Tôi không nhận được thành công với điều này.
Mike Kormendy

35

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

đa.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/>";
}

?>

35

Bạn có thể sử dụng mã này để truy xuất giá trị từ nhiều hộp tổ hợp chọn

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;
}
?>

7
    <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 như thế này

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

5

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

<?php

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

?>

3
Đ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 của việc gắn dấu ngoặc vuông vào tên thành phần của biểu mẫu, như thế nào name="select2[]".
charlie

5
// 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"); 
         } 
         ...

         ...
    }
?>

2

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 nhiều lựa chọn từ mã PHP dưới đây. Nó in nhiều giá trị được chọn cho phù hợp.

$shift=$_POST['selectDuration'];

print_r($shift);

0

Tôi khắc phục vấn đề của mình với javascript + HTML. Đầu tiên tôi kiểm tra các tùy chọn đã chọn và lưu nó trong một trường ẩn trong mẫu 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 bằng cách đăng trường đó và nhận tất cả các chuỗi ;-) Tôi hy vọng nó sẽ hoạt động cho ai đó nhiều hơn. Cảm ơn tất cả.


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

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

0
foreach ($_POST["select2"] as $selectedOption)
{    
    echo $selectedOption."\n";  
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.