POST数组到另一个页面的最后一个值

时间:2016-12-02 19:21:32

标签: php html forms select

我遇到了从表单中获取正确数组值的问题。

我有那个代码,我调用表单选项值3次。这是在数据库中定义的。我在下面的图片中有一个数据库中的示例:

enter image description here

当我按下“Submeter”按钮重定向到另一个页面,在那里给出了传递数组的回声。

teste.php

<?php
   $option = isset($_POST['corp_resp']) ? $_POST['corp_resp'] : false;
   if ($option) {
      print_r ($_POST['corp_resp']);
   } else {
     echo "task option is required";
     exit; 
   }

给出的输出:

Array ( [0] => 0.75 )

我需要得到的输出:

Array ( [0] => 0.25 [1] => 0.50 [2] => 0.75 )

代码表格在哪里:

echo("<tr>

    <td align=\"center\" bgcolor='FFFFFF'>$id</td>
    <td align=\"center\"  bgcolor='FFFFFF'> 
        <form id=\"teste\" method=\"post\" action=\"teste.php\"> 
        <select name='corp_resp[]'\>;
            <option value=\"0\">0</option>;
            <option value=\"0.05\">0.05</option>;
            <option value=\"0.1\">0.1</option>;
            <option value=\"0.15\">0.15</option>;
            <option value=\"0.20\">0.20</option>;
            <option value=\"0.25\">0.25</option>;
            <option value=\"0.30\">0.30</option>;
            <option value=\"0.35\">0.35</option>;
            <option value=\"0.40\">0.40</option>;
            <option value=\"0.45\">0.45</option>;
            <option value=\"0.50\">0.50</option>;
            <option value=\"0.55\">0.55</option>;
            <option value=\"0.60\">0.60</option>;
            <option value=\"0.65\">0.65</option>;
            <option value=\"0.70\">0.70</option>;
            <option value=\"0.75\">0.75</option>;
            <option value=\"0.80\">0.80</option>;
            <option value=\"0.85\">0.85</option>;
            <option value=\"0.90\">0.90</option>;
            <option value=\"0.95\">0.95</option>;
            <option value=\"1.0\">1</option>;

        </select>

        <br><br>
        </center>

        </form> 

按钮代码:

echo ('<input type="submit" name="corp_resp[]" value="Submeter"  class="link-style2" />');

3 个答案:

答案 0 :(得分:3)

表单中只有一个选择元素。

&#xA;&#xA;

如果您希望将多个选择元素的数据一起提交,那么您需要将它们全部放在同一个元素中表单。

&#xA;&#xA;

移动表单的开始和结束标记,使它们围绕整个表格。

&#xA;

答案 1 :(得分:1)

我们可以通过从数据库动态生成<select>来改进您的代码:

<form id="teste" method="post" action="teste.php"> 

<?php
$con = mysqli_connect( "localhost","root","","database_name" ); // ◄■ CONNECT TO DATABASE.
$dat_menuid = mysqli_query( $cnn,"select * from my_table" ) // ◄■ MENUIDs.
                      or die( mysqli_error($con) );
$options = array( "0.25","0.50","0.75" ); // ◄■■ OPTIONS ARE STATIC (ALWAYS THE SAME).
while ( $row_menuid = mysqli_fetch_array( $data ) ) // ◄■ DISPLAY <SELECT>s.
{ echo "<select name='corp_resp&{$row_menuid["id"]}'>\n"; // ◄■■ CORP_RESP&1,CORP_RESP&2.
  foreach ( $options as $opt ) // ◄■■ DISPLAY OPTIONS.
    echo "<option value='$opt'>$opt</option>\n";
  echo "</select>\n"; // ◄■■ SELECT END.
}
?>
        <br><br>
        <input type="submit" value="SUBMIT"/>
</form>

说明:每个<select>的名称为&#34; corp_resp&amp;&#34;和menuid(4,5,6),所以名称是&#34; corp_resp&amp; 4&#34;,&#34; corp_resp&amp; 5&#34;,&#34; corp_resp&amp; 6&#34;等。所有选择都具有相同的选项。请注意,之前的代码从数据库中获取了menuid,因此它将显示与menuid一样多的<select>

现在&#34; teste.php&#34;将插入如下:

<?php
   if ( isset($_POST) ) {
   foreach ( $_POST as $key => $value )
      { $cr = explode( "&",$key ); // ◄■■ SPLIT : [0]="CORP_RESP",[1]="1".
        mysqli_query( $con,"insert into my_table (menuid,corp_resp) " .
                                        "values ('{$cr[1]}','$value')" );
      }
   } else {
     echo "task option is required";
     exit; 
   }
?>

说明:$ _POST中的所有名称都被拆分,例如:&#34; corp_resp&amp; 4&#34;成为$ cr [0](&#34; corp_resp&#34;)和$ cr [1](&#34; 4&#34;)。此编号用作所选选项的ID。

答案 2 :(得分:0)

正如昆汀所说,你只有一个选择,但你需要三个选择。 要实现你写的东西,试着写出类似的东西:

 <table>
    <tr>
      <td>
        <select name='corp_resp[0]' >
          <option value="0.85">0.85</option>
          <option value="0.90">0.90</option>
          <option value="0.95">0.95</option>
          <option value="1.0">1</option>
         </select>
      </td>
    </tr>
    <tr>
      <td>
        <select name='corp_resp[1]' >
          <option value="0.85">0.85</option>
          <option value="0.90">0.90</option>
          <option value="0.95">0.95</option>
          <option value="1.0">1</option>
         </select>
      </td>
    </tr>
    <tr>
      <td>
        <select name='corp_resp[2]' >
          <option value="0.85">0.85</option>
          <option value="0.90">0.90</option>
          <option value="0.95">0.95</option>
          <option value="1.0">1</option>
         </select>
      </td>
    </tr>
</table>