2010-03-09 87 views
198

我有一个HTML表单,它有一个选择列表框,您可以从中选择多个值,因为它的多个属性设置为多个。考虑表单方法是'GET'。该窗体的HTML代码如下:如何获得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>

我想Display.php的页面上显示的选择列表框中选择的值。那么如何使用$_GET[]数组在display.php页面上访问选定的值。

+0

你允许重命名'select2'吗?或者其他人控制表单? –

回答

335

如果你想PHP对待$_GET['select2']作为一组选项只加方括号中select元素像这样的名字:<select name="select2[]" multiple …

然后你就可以存取权限的数组中的PHP脚本

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

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

$_GET可能会被$_POST取代,具体取决于<form method="…"的值。

+1

对我来说,似乎,如果没有选择任何多选的浏览器不发送post/get参数。你怎么能强制拥有一个空的数组呢? – emfi

+0

我不得不使用$ _POST ['select2']而不是$ _GET ['select2'] –

+1

这是一个旧的答案,但这是一个误导性的答案! (name =“select2 []”)是正确的@Coufu回答! – meYnot

152

变化:

<select name="select2" ... 

要:

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

在某些情况下,为什么这仍然行不通?我没有得到这个成功。 –

+0

这只是点! –

32

使用下列程序从选择框中的多个值。

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

您可以使用此代码从多选组合框检索值

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:

​​
5

这将显示所选值:

<?php 

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

?> 
+1

这有多个缺陷:1)OP使用GET方法; 2)缺少将方括号添加到表单元素名称的最重要步骤,如'name =“select2 []”'。 – charlie

0

我解决我用JavaScript + HTML问题。首先我检查所选的选项并保存它在我的表单的一个隐藏字段:

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

接下来,我通过邮局拿到场,并得到所有字符串;-) 我希望这将是为别人更多的工作。谢谢大家。

+1

这有多个缺陷:1)取决于可用的JavaScript; 2)在将它们连接成一个单独的字符串时不会分开这些值,因此使得以后将字符串拆分为值是不可能的。 – charlie

+0

这个答案给了我必要的方向。谢谢。 –

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

这显然不起作用。 –

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> 

您可以直接遍历像这样

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

,或者你可以做这样的

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

你可以不喜欢这一点。它为我解决。

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

然后取多个选择从下方以下PHP代码。它相应地打印选定的多个值。

$shift=$_POST['selectDuration']; 

print_r($shift); 
相关问题