Bagaimana cara mendapatkan beberapa nilai terpilih dari kotak pilih di php?


240

Saya memiliki formulir html yang memiliki kotak daftar pilih tempat Anda dapat memilih beberapa nilai karena beberapa properti disetel ke beberapa. Pertimbangkan metode formulir adalah 'GET'. Kode html untuk formulir adalah sebagai berikut:

<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>

Saya ingin menampilkan nilai yang dipilih di kotak daftar pilih pada halaman display.php. Jadi bagaimana nilai-nilai yang dipilih diakses pada halaman display.php menggunakan $_GET[]array.


Apakah Anda diizinkan mengganti nama select2? Atau apakah orang lain yang mengendalikan formulir?
Damian Yerrick

Jawaban:


393

Jika Anda ingin PHP memperlakukan $_GET['select2']sebagai array pilihan, tambahkan tanda kurung siku ke nama elemen pilih seperti ini:<select name="select2[]" multiple …

Kemudian Anda dapat mengakses array dalam skrip PHP Anda

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

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

$_GETdapat diganti dengan $_POSTtergantung pada <form method="…"nilainya.


1
bagi saya tampaknya, browser itu tidak mengirim post / get-parameter jika tidak ada yang dipilih dari multi-pilih. bagaimana Anda bisa memaksa untuk memiliki array kosong?
emfi

Saya harus menggunakan $ _POST ['select2'] alih-alih $ _GET ['select2']
Kyle Bridenstine

2
Ini adalah jawaban lama, tetapi ini adalah jawaban yang menyesatkan! (name = "select2 []") benar ketika @Coufu menjawab!
meTidak

@emfi Jika Anda ingin parameter dikirim, harus ada nilai; Anda dapat menambahkan "terpilih" ke tag (yaitu <option value="" selected></option>) jika Anda dapat mentolerir memiliki opsi default dalam daftar. Anda juga dapat menggunakan CSS untuk membuat opsi default tidak terlihat; namun jika seseorang memilih opsi yang berbeda, maka batalkan pilihan semuanya .. Anda dapat berakhir tanpa nilai yang dikembalikan. Jadi .. tidak ada solusi bersih menggunakan GET.
apraetor

1
Menambahkan [] bekerja untuk saya baik pada POST dan GET, tetapi URI yang dihasilkan (dengan GET) terlalu mengerikan (..multiselect.php? Ms% 5B% 5D = 1 & ms% 5B% 5D = 2)
Teson

182

Perubahan:

<select name="select2" ...

Untuk:

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

Dalam beberapa kasus, mengapa ini masih tidak berfungsi? Saya tidak mendapatkan kesuksesan dengan ini.
Mike Kormendy

35

Gunakan program berikut untuk memilih beberapa nilai dari kotak pilih.

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

?>

35

Anda dapat menggunakan kode ini untuk mengambil nilai dari beberapa kotak kombo pilih

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>

Anda dapat mengulanginya langsung seperti ini

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

atau Anda bisa melakukannya seperti ini

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

5

Ini akan menampilkan nilai yang dipilih:

<?php

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

?>

3
Ini memiliki beberapa kelemahan: 1) OP menggunakan metode GET; 2) tidak memiliki langkah paling penting untuk menambahkan tanda kurung siku ke nama elemen bentuk, misalnya 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

Anda bisa melakukan ini juga. Itu berhasil untuk saya.

<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>

Kemudian ambil beberapa pilihan dari mengikuti kode PHP di bawah ini. Ini mencetak beberapa nilai yang dipilih sesuai.

$shift=$_POST['selectDuration'];

print_r($shift);

0

Saya memperbaiki masalah saya dengan javascript + HTML. Pertama saya memeriksa opsi yang dipilih dan menyimpannya di bidang tersembunyi dari formulir saya:

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

Selanjutnya, saya mendapatkan dengan memposting bidang itu dan mendapatkan semua string ;-) Saya harap ini akan bekerja untuk orang lain. Terimakasih untuk semua.


1
Ini memiliki beberapa kelemahan: 1) tergantung pada JavaScript yang tersedia; 2) tidak memisahkan nilai-nilai ketika bergabung dengan mereka menjadi string tunggal, sehingga membuatnya mustahil untuk membagi string kembali ke nilai-nilai nanti.
charlie

Jawaban ini memberi saya arahan yang diperlukan. Terima kasih.
Oleg Popov

0
foreach ($_POST["select2"] as $selectedOption)
{    
    echo $selectedOption."\n";  
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.