PHP - 数组多维提交

时间:2012-07-08 13:51:39

标签: php arrays forms input multidimensional-array

我是新来的。我有问题而且非常着急:( 场景:我想制作一个动态输入表单。用户输入他们想要的多个列和行。然后,它生成表格作为以前形式输入的数字。之后,用户向表中输入一个随机数,然后单击“提交”按钮。系统将记录数据并对其进行处理。最后,系统将显示平均值(仅作为示例)。

表生成成功。问题是如何保存/读取以输入形式输入的数据。

这是input.php       

<tr> 
<td width="30%" align="left" valign="top">Input the number of columns     :<td      height="37" align="left" valign="top"><input type="text" name="colums" value="" /></td> 
</tr> 
<tr> 
<td align="left" valign="top">Input the number of rows :</td> 
<td width="70%" align="left" valign="top"><input type="text" name="rows" value="" /></td> 
</tr> 
<tr> 
<td align="left" valign="top">&nbsp;</td> 
<td align="left" valign="top"><input type="submit" name="button" id="button" value="Submit" /></td> 
</tr> 
</table> 
</form> 

和结果php就是这样..

<?php 
$columns = $_POST['columns']; 
$rows = $_POST['rows']; 

echo "<form method='post' action='process.php'>"; 
echo "<table>"; 

//made the rows 
for ($i= 0; $i <= $rows-1; $i++){ 

//and the colums 
echo "<tr>"; 
for ($j = 0; $j <= $colums-1; $j++) { 

//here is the input form, and each of data inputed here that i want to save it. 
$sum = array('[$i][$j]'); 
echo "<td> </td> 
    <td><input size='5' type='text' name='data".$sum."' /></td> 
"; 

}
echo "</tr>";  
} 


echo "<tr><td></td><td><input type='submit' name='submit' values='Submit' /></td></tr>"; 
//im not sure here in value='$sum' 
echo "<tr><td></td><td><input type='hidden' name='banyak' value='$sum' /></td></tr>"; 
echo "</table>"; 
echo "</form>"; 

// here,which one should i $_GET[''] ? 

?>

并且process.php显示数据的平均值。我在process.php中完全错了。

3 个答案:

答案 0 :(得分:3)

检查一下:

<?php 
$columns = 3; //test value
$rows    = 2; //test value

echo "<form method='post' action='process.php'>"; 
echo "<table>"; 

//made the columns 
for ($row_idx= 0; $row_idx <=$rows-1; $row_idx++){ 

    //and the rows 
    echo "<tr>"; 
    for ($col_idx = 0; $col_idx <= $columns-1; $col_idx++) { 

    //here is the input form, and each of data inputed here that i want to save it. 
    $sum = array('[$row_idx][$col_idx]'); //??? What's for that?
    echo "<td></td> 
        <td><input size='5' type='text' name='data[{$row_idx}][{$col_idx}]' /></td> 
    "; 

    } 
}

echo "</tr>"; 
echo "<tr><td></td><td><input type='submit' name='submit' values='Submit' /></td></tr>"; 
//im not sure here in value='$sum' 
echo "<tr><td></td><td><input type='hidden' name='banyak' value='$sum' /></td></tr>"; 
echo "</table>"; 
echo "</form>"; 

// here,which one should i $_GET[''] ? 

echo "<PRE>";
print_r($_REUQEST['data']);
echo "</PRE>";

?>
  1. 您可以将变量命名为可理解的。
  2. 您应该将输入文件名称命名为数组,并且它将由php解析,因此<input name='data[1][2]' value="foo">将&#34;到达&#34;来自$data = array('1' => array('2' => "foo"));

答案 1 :(得分:0)

正如@Braiba所说,替换

$sum = array('[$i][$j]');

$sum = "[$i][$j]";

然后你使用

$my_data = $_GET['data']; 

这将是一个二维数组。

答案 2 :(得分:-2)

替换

$sum = array('[$i][$j]');

$sum = "[$i][$j]";

(注意双引号)

同时将关闭的tr标签向上移动一行,使其实际位于循环内,并删除包含隐藏输入的行。即使你需要那个值,你也不应该为它创建一行;它看起来会让人感到困惑。

编辑:我应该尝试阅读问题的实际内容,而不仅仅是看到损坏的代码并尝试修复它。正如其他人现在所说的那样,一旦你做了所有这些,它将以$ _GET ['data']

的形式提交