2010-03-09 22 views
198

Birden çok özelliği birden çok değerine ayarlandığından, birden çok değer seçebileceğiniz seçim kutusu içeren bir html formu var. Form yönteminin 'GET' olduğunu düşünün. aşağıdaki gibi form için html kodu şöyledir:Php'de seçili kutu seçili çoklu değerler nasıl alınır?

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

Ben display.php sayfada seçilen liste kutusunda seçili değerleri görüntülemek istiyorum. Seçili değerler, $_GET[] dizisini kullanarak display.php sayfasında nasıl erişilir.

+0

'select2' adını değiştirebilir misiniz? Yoksa formu başka biri kontrol ediyor mu? hiçbir şey çoklu seçim seçilmiş olsaydı görünüyor benim için –

cevap

335

PHP sadece seçme elemanı böyle ismine köşeli parantez eklemek seçeneklerden bir dizi olarak $_GET['select2'] tedavi etmek istiyorsanız: <select name="select2[]" multiple …

Sonra PHP komut dizisini acces

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

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

$_GET<form method="…" değerine bağlı olarak $_POST ile değiştirilebilir.

+1

, bu tarayıcı sonrası/get-parametresini göndermez. Bunun yerine boş bir diziye sahip olmayı nasıl zorlayabilirsin? – emfi

+0

$ _POST ['select2'] yerine $ _GET ['select2'] yerine kullanmam gerekiyordu. –

+1

Bu eski bir cevap, ama yanıltıcı bir cevap! @Coufu cevaplandığı gibi (name = "select2 []") doğrudur! – meYnot

152

Değişimi:

<select name="select2" ... 

için: select kutusundan birden çok değer seçmek için

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

Neden bu hala çalışmıyor? Bununla başarıya ulaşamıyorum. –

+0

Bu sadece bir noktada! –

32

aşağıdaki programı kullanı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_ 

?> 

Birden seçme açılan kutusundan değerleri almak için bu kodu kullanabilirsiniz

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

?> 
30

value.php

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

Bu seçilen değerleri görüntüler:

<?php 

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

?> 
+1

Bunun birden çok kusuru var: 1) OP, GET yöntemini kullanıyordu; 2) “name =” select2 [] "' gibi form elemanı adına köşeli parantez eklemenin en önemli adımından yoksundur. – charlie

0

javascript + HTML ile benim sorunu çözmek. Öncelikle ben seçenekleri seçilmiş ve benim formun gizli alan çıkmasıdır kaydetmek onay: i postayla bu alanı almak ve bunu daha biri için çalışma umuyoruz tüm dizeyi ;-) olsun

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

Sonraki . Herkese teşekkürler.

+1

Bu, birden çok kusura sahip: 1) mevcut JavaScript'e bağlı; böylece imposible sonradan değerlere geri dize bölmek için yapım tek bir dize içine katılırken 2) değerleri ayırmak etmez. – charlie

+0

Bu cevap bana gerekli yön verir. Teşekkürler. –

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

, bu açıkça çalışmıyor. –

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> 

Bu

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

gibi doğrudan yineleme edebilir veya Sen de böyle yapabilirdi bu

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

gibi yapabilirsiniz. Benim için çalıştı.

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

Ardından aşağıdaki PHP kodunu aşağıdaki birden fazla seçim hakkını al. Seçilen çoklu değerleri buna göre yazdırır.

$shift=$_POST['selectDuration']; 

print_r($shift); 
İlgili konular