我遇到了从表单中获取正确数组值的问题。
我有那个代码,我调用表单选项值3次。这是在数据库中定义的。我在下面的图片中有一个数据库中的示例:
当我按下“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" />');
答案 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>