我正在使用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);
}
}
?>
答案 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”,当您单击它们时,该行将在后台处理,而不会重新加载页面。
所以我允许用户提交包含普通表单提交按钮的许多行,或者提交任何单独的行,而不必等待页面重新加载。
如果有人有兴趣,我可以在这里添加一些代码。