循环浏览数据,创建多个要提交的表单


Loop through data creating multiple forms to submit

我用PHP打开一个文件(格式化为行和列),在文件上的行中循环,并将行回显到符合特定条件的表中。在我回显的每一行上,我都将其包装在表单标签中。最终,如果我回显20行,我将回显20个表单,每个表单都有一个按钮。我还用一个评论框呼应了一个专栏。我希望最终用户能够转到这个页面,在每一行上输入注释,然后点击提交按钮将行的结果存储到数据库中。我有两个问题不知道如何克服。

1.)当将结果回显到表时,当我创建SQL插入语句时,我不会创建要引用的静态变量。如何标记每条数据以便稍后调用?

2.)将会有多个表单,用户一次只能使用一个表单。如何确保用户单击提交时,只提交同一行的数据字段?

希望这是有道理的。如果不是,我很乐意添加尽可能多的澄清。当谈到PHP时,我绝对是个新手,所以我确信这是一个糟糕的设计,但我的时间紧迫,我现在只需要一个工作产品。下周我可以回去,也许可以实施一个更好的解决方案,我相信你们善良的人会建议:)

<?php 
if (($handle = fopen("name of file to open here", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, "'t")) !== FALSE) {
    if ($data[4] == $login){
        $num = count($data);
                echo "<form action='analyzer.php' method='post'>";
                echo "<tr>";
                echo "<td>"; 
                echo $data[1];
                echo "</td>";
                echo "<td>";
                echo $data[2];
                echo "</td>";
                echo "<td>";
                echo $data[3];
                echo "</td>";
                echo "<td>";
                echo $data[4];
                echo "</td>";
                echo "<td>";
                echo $data[5];
                echo "</td>";
                echo "<td>";
                echo $data[6];
                echo "</td>"; 
                echo "<td>"; 
                echo $data[7];
                echo "</td>";
                echo "<td>";
                echo $data[8];
                echo "</td>"; 
                echo "<td>";    
                echo "<input type='text' name='comments' />";
                echo "</td>"; 
                echo "<td>"; 
                echo "<input class='mybutton' type='submit'         name='#' value='Submit' />";    
                echo "</td>"; 
                echo "</tr>";
                echo "</form>";

}
fclose($handle);
}
}
?>

1.)当将结果回显到表时,当我创建SQL插入语句时,我不会创建要引用的静态变量。如何标记每条数据以便稍后调用?

您需要某种方法来唯一地识别数据。您可以使用隐藏的输入变量来完成此操作。

2.)将会有多个表单,用户一次只能使用一个表单。如何确保用户单击提交时,只提交同一行的数据字段?

您可以命名窗体,也可以在数组中为它们指定一个序列。例如:

<input type="submit" name="form[5]" />

您还可以使用这样的循环来简化代码:

foreach( $data as $key=>$val ) {
    echo "<td>$val</td>";
}

我知道这里已经有了一个公认的答案,但我想建议另一种方法。从UI的角度来看,在一个页面上有一堆表单,每个表单都有自己的提交按钮,每次都需要加载页面,这有点麻烦。

我的建议是,您应该开始学习Ajax的漫长、痛苦和有益的过程。我一直在学习jQueryAJAX,并用它做类似的事情。

示例:

我有一个有30行的表,每行代表一个过程。每一行都有一个复选框。我在底部有一个提交按钮,用户可以在其中提交带有复选框的所有行。

但是,我在每一行都有按钮(实际上就在复选框旁边)。按钮被简单地标记为"现在",当您单击它们时,该行将在后台进行处理,而不会重新加载页面。

因此,如果用户愿意,我允许他们使用普通表单提交按钮提交许多行,或者提交任何单独的行,而不必等待页面重新加载。

如果有人感兴趣的话,我也许可以在这里添加一些代码。