循环遍历数据创建多个表单以提交

时间:2013-02-22 02:44:54

标签: php sql

我正在使用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);
}
}

?>

2 个答案:

答案 0 :(得分:1)

  

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

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

  

2。)将有多种形式,用户一次只能使用一种形式。如何确保当用户单击“提交”时,它仅提交同一行中的数据字段?

您可以为表单命名或在数组中为它们分配序列。例如:

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

您还可以使用如下循环来简化代码:

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

答案 1 :(得分:0)

我知道这里已有一个已接受的答案,但我觉得建议采用另一种方式。从UI的角度来看,在一个页面上有一堆表单,每个表单都有自己的提交按钮,并且每次都需要加载页面,这样做很麻烦。

我的建议是,你开始学习Ajax的漫长,痛苦和有益的过程。我一直在学习jQuery AJAX,我用它来做类似的事情。

示例:

我有一个包含30行的表,每行代表一个进程。 每行都有一个复选框。 我在底部有一个提交按钮,用户可以使用复选框提交所有行。

但是,我每行也有按钮(实际上是在复选框旁边)。这些按钮只是标记为“now”,当您单击它们时,该行将在后台处理,而不会重新加载页面。

所以我允许用户提交包含普通表单提交按钮的许多行,或者提交任何单独的行,而不必等待页面重新加载。

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