【发布时间】:2017-05-04 14:57:42
【问题描述】:
我目前有一个根据上传的 CSV 构建的表单。当用户上传 CSV 并点击“预览”按钮时,它会定向到一个窗口,该窗口在可编辑的表格中显示整个 CSV。 CSV 是 5 条记录和 229 个字段。输入名称是根据行数和列数构建的,因此对于此 CSV,它应该从 row1col1 开始并转到 row5col229。
我发现名称按预期工作,但我仍然遇到问题。一些 CSV 文件将有 4 行,有些可能有 8 或 9 行。我需要找到一种方法来获取表单输入并将其全部提交到 229 字段临时表中。
有没有一种方法可以为一行创建一个数组和语句,并为实际存在的多行循环它?
这是我当前的代码:
if(isset($_POST['preview']))
{
ini_set('auto_detect_line_endings', true);
$file = $_FILES["file"]["tmp_name"];
$handle = fopen($file, "r");
$maxPreviewRows = PHP_INT_MAX; // this will be ~2 billion on 32-bit system, or ~9 quintillion on 64-bit system
$hasHeaderRow = true;
echo '<form method="post">';
echo '<table>';
if ($hasHeaderRow) {
$headerRow = fgetcsv($handle);
echo '<thead><tr>';
foreach($headerRow as $value) {
echo "<th>$value</th>";
}
echo '</tr></thead>';
}
echo '<tbody>';
$rowCount = 0;
while ($row = fgetcsv($handle)) {
$colCount = 0;
echo '<tr>';
foreach($row as $value) {
echo "<td><input name='row".$rowCount."col".$colCount."' type='text' value='$value' /></td>";
$colCount++;
}
echo '</tr>';
if (++$rowCount > $maxPreviewRows) {
break;
}
}
echo '</tbody></table>';
echo '<input type=\'submit\' value=\'Submit\' >';
var_dump($_POST);
echo '</form>';
}
?>
我觉得我走在正确的轨道上,但我不知道如何构建元素数组或语句,以便它成为一个模板,可以这么说,并为所有行循环它。
【问题讨论】:
-
我回滚了你的编辑并将你的编辑放在你的答案而不是你的问题上!