0

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

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);
}
}

?>
4

2 回答 2

1

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

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

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

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

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

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

foreach( $data as $key=>$val ) {
    echo "<td>$val</td>";
}
于 2013-02-22T02:48:15.433 回答
0

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

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

例子:

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

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

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

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

于 2013-05-04T06:25:34.380 回答