我有一些text inputs
。 inputs
是从while
循环生成的。现在我想把values
放在一个数组中。像这样:
array values
mark['0'] input1
mark['1'] input2
mark['2'] input3
我尝试了这个但不行。
while($row=mysql_fetch_array($result)){
<form class="form1" name="form1" method="post">
<input type="text" name="mark[]"/>
</form>
}
<form class="form1" name="form1" method="post">
<button type="submit" name="correction"></submit>
</form>
然后
if(isset($_POST['correction'])){
$grade=0;
$mark=$_POST['mark'];
foreach($mark as $key =>$value ){
$grade+=$value;
}
print $grade;
}
我收到这些错误:
Notice: Undefined index: mark in C:\xampp\htdocs\virtual_exam\handy_correction.php on line 37
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\virtual_exam\handy_correction.php on line 38
问题可能是由两种不相互连接的形式引起的,如果是,则如何加入它们? 如果不是,怎么做我想要的?
答案 0 :(得分:2)
您应该只有一个表单元素,而不是您尝试输出的每一行都有一个,当然也不是表单提交按钮的单独元素。
您的问题是您提交的实际表单中只有一个元素 - 提交按钮。因此,根本没有输入字段可以发布。
您应该生成如下表单:
<form class="form1" name="form1" method="post">
<?php
while($row=mysql_fetch_array($result)){
?>
<input type="text" name="mark[]"/>
<?php
}
?>
<button type="submit" name="correction"></submit>
</form>
答案 1 :(得分:1)
将表单更改为:
<form class="form1" name="form1" method="post">
<?php
while ($row = mysql_fetch_array($result)) {
echo '<input type="text" name="mark[]" />';
}
?>
<input type="submit" name="correction" value="Submit" />
</form>
然后:
if (isset($_POST['correction'])) {
$grade = 0;
$mark = $_POST['mark'];
foreach ($mark as $key => $value) {
$grade += $value;
}
echo $grade;
}
答案 2 :(得分:-1)
你说的最后一段是正确的,你提交的form1只包含提交按钮,因此处理POST的PHP脚本中不存在mark
。
所以将HTML更改为:
<form class="form1" name="form1" method="post">
<?php
while($row=mysql_fetch_array($result)){
?>
<input type="text" name="mark[]"/>
<?php
}
?>
<button type="submit" name="correction"></submit>
</form>