Php में चयनित बॉक्स के कई चयनित मान कैसे प्राप्त करें?


240

मेरे पास एक html फॉर्म है जिसमें एक चयन सूची बॉक्स है जिसमें से आप कई मानों का चयन कर सकते हैं क्योंकि इसकी एकाधिक संपत्ति एकाधिक पर सेट है। विचार विधि 'GET' है। फ़ॉर्म के लिए HTML कोड इस प्रकार है:

<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[]सरणी का उपयोग करके प्रदर्शन पर चयनित मानों को एक्सेस किया जा सकता है ।


क्या आपको नाम बदलने की अनुमति है select2? या कोई और रूप को नियंत्रित करता है?
डेमियन येरिक

जवाबों:


393

यदि आप चाहते हैं कि PHP $_GET['select2']विकल्प के एक सरणी के रूप में व्यवहार करे , तो इस तरह के चयन तत्व के नाम पर वर्ग कोष्ठक जोड़ें :<select name="select2[]" multiple …

फिर आप अपने PHP स्क्रिप्ट में सरणी को जोड़ सकते हैं

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

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

$_GETमूल्य के $_POSTआधार पर प्रतिस्थापित किया जा सकता है <form method="…"


1
मेरे लिए ऐसा लगता है, कि ब्राउजर पोस्ट / गेट-पैरामीटर नहीं भेजता है, अगर कुछ भी बहु-चयन का चयन नहीं किया गया था। आप इसके बजाय खाली सरणी के लिए कैसे बाध्य कर सकते हैं?
एमफी

मुझे $ _GST ['select2' के बजाय $ _POST ['select2'] का उपयोग करना पड़ा
Kyle Bridenstine

2
यह एक पुराना उत्तर है, लेकिन यह एक भ्रामक उत्तर है! (name = "select2 []") @Coufu के उत्तर के अनुसार सही है!
meYnot

@emfi यदि आप चाहते हैं कि पैरामीटर भेजा जाए तो एक मूल्य होना चाहिए; <option value="" selected></option>यदि आप सूची में एक डिफ़ॉल्ट विकल्प होने को सहन कर सकते हैं, तो आप "चयनित" को टैग (यानी ) में जोड़ सकते हैं । आप डिफ़ॉल्ट विकल्प को अदृश्य बनाने के लिए CSS का भी उपयोग कर सकते हैं; हालाँकि, यदि कोई अलग विकल्प का चयन करता है, तो सब कुछ अचयनित कर देता है .. आप बिना किसी मूल्य के वापस लौट सकते हैं। इसलिए .. GET का उपयोग करके कोई साफ समाधान नहीं है।
अपराह्न

1
जोड़ना [] मेरे लिए पोस्ट और GET दोनों पर काम करता है, लेकिन परिणामी URI (GET के साथ) अभी बहुत भयानक है (.. multiselect.php? Ms% 5B% 5D = 1 & ms% 5B% 5D
Teson

182

परिवर्तन:

<select name="select2" ...

सेवा:

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

कुछ मामलों में, यह अभी भी काम क्यों नहीं कर सकता है? मुझे इससे सफलता नहीं मिल रही है।
माइक कॉर्मेंडी

35

निम्न प्रोग्राम का उपयोग करें चयन बॉक्स से कई मानों के चयन के लिए करें।

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

आप कई चुनिंदा कॉम्बो बॉक्स से मान प्राप्त करने के लिए इस कोड का उपयोग कर सकते हैं

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

आप इसे सीधे इस तरह से iterate कर सकते हैं

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

या आप इसे इस तरह से कर सकते हैं

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

5

यह चयनित मान प्रदर्शित करेगा:

<?php

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

?>

3
इसकी कई खामियां हैं: 1) ओपी जीईटी विधि का उपयोग कर रहा था; 2) यह वर्ग तत्व को लागू करने के सबसे महत्वपूर्ण चरण की कमी है, जैसे तत्व नाम, जैसे name="select2[]"
चार्ली

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

आप भी ऐसा कर सकते हैं। इसने मेरे लिए काम किया।

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

0

मैं जावास्क्रिप्ट + 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) जावास्क्रिप्ट उपलब्ध होने के आधार पर है; 2) उन्हें एक ही स्ट्रिंग में शामिल करते समय मानों को अलग नहीं करता है, इस प्रकार यह स्ट्रिंग को बाद में मूल्यों में वापस विभाजित करने के लिए असंभव बना देता है।
चार्ली

यह उत्तर मुझे आवश्यक दिशा देता है। धन्यवाद।
ओलेग पोपोव

0
foreach ($_POST["select2"] as $selectedOption)
{    
    echo $selectedOption."\n";  
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.