【问题标题】:How to send an array from a drop down selection form to another page with PHP如何使用 PHP 将数组从下拉选择表单发送到另一个页面
【发布时间】:2013-12-17 00:54:31
【问题描述】:

我有一个下拉输入表单。我希望将选择放入一个数组中,然后发送到另一个页面进行显示。但由于某种原因,它没有打印。

让我向您展示我的代码,以便您更好地理解。

这是我的下拉输入表单的样子

<label>Start Month:</label>
    <select>
         <option name="sMonth[]" value="Jan">Jan</option>
         <option name="sMonth[]" value="Feb">Feb</option>
         <option name="sMonth[]" value="March">March</option>
         <option name="sMonth[]" value="April">April</option>
         <option name="sMonth[]" value="May">May</option>
         <option name="sMonth[]" value="June">June</option>
         <option name="sMonth[]" value="July">July</option>
         <option name="sMonth[]" value="Aug">Aug</option>
         <option name="sMonth[]" value="Sept">Sept</option>
         <option name="sMonth[]" value="Oct">Oct</option>
         <option name="sMonth[]" value="Nov">Nov</option>
         <option name="sMonth[]" value="Dec">Dec</option>
    </select>

在下一个 php 页面上:

<?php $sMonth=$_POST['sMonth']; // start month  ?>

<?php echo $sMonth[0]; ?>

但它不打印任何东西。

注意 = 我知道,从下拉菜单中,选择将被放入数组的第一个元素位置。我想打印第一个元素。如果我可以打印第一个元素,我将能够打印其余的元素。

【问题讨论】:

  • 您的表单是否设置为action="post"?为什么在这里将值作为数组传递?
  • 不,它的 action=second.php 和 method="post
  • 对不起的意思是method="post" :P

标签: php html arrays forms


【解决方案1】:

问题在于 SELECT,它应该包含名称

<select name="sMonth[]" multiple>
    <option value="Jan">Jan</option>
    <option value="Feb">Feb</option>

等等

【讨论】:

  • 倍数有什么用?我不希望将所有选项都设置在其中。我只想将用户选择的月份设置到数组中。
  • 然后你可以离开多个,你通常使用一个数组来存储多个值,这是使用 SELECT 的方式
  • 当您希望单个变量中有多个值时,通常使用数组。由于您想使用数组,人们假设您想要一个多选元素。如果不是,那么在您的 HTML 中不使用数组可能更有意义,而是使用 $months = array ($_POST['sMonth']); 将其转换为服务器端的数组
【解决方案2】:

试试这个:

Here you made mistake of HTML.

In dd control, SELECT statement contains name property && OPTION statement contains value property. So just change this and your code will working properly.

i.e.

<select name="sMonth[]">

&&

remove name from option tag.
  • 谢谢

【讨论】:

    【解决方案3】:
    <label>Start Month:</label>
        <select name="sMonth">
             <option value="Jan">Jan</option>
             <option value="Feb">Feb</option>
             <option value="March">March</option>
             <option value="April">April</option>
             <option value="May">May</option>
             <option value="June">June</option>
             <option value="July">July</option>
             <option value="Aug">Aug</option>
             <option value="Sept">Sept</option>
             <option value="Oct">Oct</option>
             <option value="Nov">Nov</option>
             <option value="Dec">Dec</option>
        </select>
    
    <?php $months = $_POST['sMonth']; // start month  ?>
    
    <?php print_r($months) ?>
    

    【讨论】:

    • 倍数有什么用?我不希望将所有选项都设置在其中。我只想将用户选择的月份设置到数组中。
    【解决方案4】:

    您创建选择下拉列表的方式是错误的。 为什么? 因为名称标签没有放在选项标签中。 选项标签只应该携带该值。 将您的名称标签放入选择器标签中,您将看到您的变量已传递到 php.ini 文件中。 试试这个:

     <label>Start Month:</label>
            <select name="sMonth">
                 <option value="Jan">Jan</option>
                 <option value="Feb">Feb</option>
                 <option value="March">March</option>
                 <option value="April">April</option>
                 <option value="May">May</option>
                 <option value="June">June</option>
                 <option value="July">July</option>
                 <option value="Aug">Aug</option>
                 <option value="Sept">Sept</option>
                 <option value="Oct">Oct</option>
                 <option value="Nov">Nov</option>
                 <option value="Dec">Dec</option>
            </select>
        //in your php capture your month as below
        <?php $sMonth=$_POST['sMonth']; // start month  ?>
    
    var_dump($_POST['sMonth']);
    //you will see your selected value.
    

    【讨论】:

      猜你喜欢
      • 2020-07-11
      • 2016-12-22
      • 1970-01-01
      • 2017-05-22
      • 2016-03-19
      • 2015-09-09
      • 2012-09-17
      • 1970-01-01
      • 2018-04-11
      相关资源
      最近更新 更多