2012-12-02 31 views
2

我猜这已被问过,但我做了一些搜索,一直没能找到答案(可能是因为我缺乏术语)。在窗体中传递多行输入并在PHP中迭代它们?

我正在处理一个应用程序,该应用程序在表中显示一堆输入行,并且当表单被提交时,我需要遍历每个输入用输入值更新数据库。我一直在做的是命名输入这样的:

<input type="text" name="name1"><input type="text" name="gender1"> ... 
<input type="text" name="name2"><input type="text" name="gender2"> ... 
<input type="text" name="name3"><input type="text" name="gender3"> ... 
. 
. 
. 

然后在PHP这样做:

for($i = 1; isset($_POST['name' . $i]); $i++) 
{ 
    $name = $_POST['name' . $i]; 
    $gender = $_POST['gender' . $i]; 
    // update DB with input values 
} 

在我的应用程序行,可以添加和删除,也有每行约6个输入,并且经常有几十行。这对我来说似乎有点混乱,我想知道是否有更好的/更干净的方法来做到这一点?

回答

6

更好地采取HTML input array

<input type="text" name="name[]"> 
<input type="text" name="gender[]"> 

在PHP中使用下面的方法,你必须做以下

$cnt = count($_POST['name']); 
for($i=0;$i<$cnt;$i++){ 
    echo $_POST['name'][$i]; 
    echo $_POST['gender'][$i]; 
    .... 
    // do any update with database 
} 
+1

为什么downvoting好吗? – GBD

+0

这是执行此任务的标准方式。 – SaidbakR

+0

我可以确定同一行中的不同输入具有相同的索引吗? (即在我的例子中,如果名称和性别位于数组中,那么它们需要具有相同的索引,以便我知道将它们放在同一行中)。 – Nate

相关问题