web-dev-qa-db-fra.com

Comment obtenir plusieurs valeurs sélectionnées de la zone de sélection en php?

J'ai un formulaire HTML qui a une zone de liste de sélection à partir de laquelle vous pouvez sélectionner plusieurs valeurs car sa propriété multiple est définie sur multiple. Considérons que la méthode de formulaire est 'GET'. Le code html du formulaire est le suivant:

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

Je veux afficher les valeurs sélectionnées dans la liste de sélection sur la page display.php. Alors, comment accède-t-on aux valeurs sélectionnées sur la page display.php en utilisant le tableau $_GET[]?.

230
Param-Ganak

Si vous voulez que PHP traite $_GET['select2'] comme un tableau d'options, ajoutez simplement des crochets au nom de l'élément select element comme ceci: <select name="select2[]" multiple …

Ensuite, vous pouvez accéder au tableau dans votre script PHP

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

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

$_GET peut être remplacé par $_POST en fonction de la valeur <form method="…".

379
Alex Jasmin

Changement:

<select name="select2" ...

À:

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

Utilisez le programme suivant pour sélectionner plusieurs valeurs dans la zone de sélection.

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_

?>

valeur.php

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

?>
34
rekha_sri

Vous pouvez utiliser ce code pour récupérer des valeurs à partir de plusieurs boîtes à choix

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;
}
?>
32
Abdul Kalam Azad
    <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>

Vous pouvez l'itérer directement comme ça

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

ou tu peux le faire comme ça

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

Cela affichera les valeurs sélectionnées:

<?php

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

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

         ...
    }
?>
5
Rynika

Vous pouvez faire comme ça aussi. Cela a fonctionné pour moi.

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

Ensuite, prenez la sélection multiple de la suite PHP code ci-dessous. Il imprime les valeurs multiples sélectionnées en conséquence.

$shift=$_POST['selectDuration'];

print_r($shift);
2
Dulith De Costa

Je résous mon problème avec javascript + HTML. Premièrement, je vérifie les options sélectionnées et les enregistre dans un champ masqué de mon formulaire:

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

Ensuite, je reçois par la poste ce champ et reçois toute la chaîne ;-) J'espère que ça va être du travail pour quelqu'un de plus. Merci à tous.

0
Drako
foreach ($_POST["select2"] as $selectedOption)
{    
    echo $selectedOption."\n";  
}
0
SwR