php - 使用上传的 CSV 中的值创建/填写表单

标签 php html mysql forms csv

我决定要完成我的任务,我需要获取上传到我第一页的 CSV 文件,并从中构建一个表单,用 CSV 值填充输入。

我有一个正常的 CSV 上传,但这是为了查看 CSV 并在保存之前对字段进行编辑。我有一个 while 循环,我认为我应该在其中构建表单。唯一的诀窍是我构建了一个 CSV 数据数组,它在上传时处理它,它有 229 个元素长。我需要构建表单名称来反射(reflect)它,所以我将基本上命名 229 个表单字段,这很好。这是单击按钮时成功将 CSV 加载到表中的当前代码:

$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 '<table>';

    /*WE WILL NEED TO QA CONDITIONS AND HIGHLIGHT IN RED HERE. ALSO NEED BORDER STYLINGS*/

    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)) {
        echo '<tr>';
        foreach($row as $value) {
            echo "<td>$value</td>";
        }
        echo '</tr>';

        if (++$rowCount > $maxPreviewRows) {
            break;
        }
    }
    echo '</tbody></table>';

}

因此,这成功地显示了整个 CSV(6 行,每行 229 列)以供预览。现在我只需要让每个字段都可编辑,然后在提交时插入整个表单。我知道如何将表单插入数据库,所以现在我只需要了解如何在 while 循环中构建表单并为每个输入创建名称,以及如何使用实际 CSV 数据填充输入。

最佳答案

这是创建表单的方法。每个表单元素都被命名为 row1col1、row1col2、ro1col3 等...

    $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>\n';
        echo '<table>';

        /*WE WILL NEED TO QA CONDITIONS AND HIGHLIGHT IN RED HERE. ALSO NEED BORDER STYLINGS*/

        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\' >';
        echo '</form>';

关于php - 使用上传的 CSV 中的值创建/填写表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43773735/

相关文章:

php - mysql如果计数为空则将其设为零

php - CSS、PHP、mySQL Loop - 根据变量更改 td 颜色

javascript - 为什么第二次点击功能不起作用?

php - 使用 PHP 比较数据库中的值

javascript - 将数据从 Python 脚本发送到浏览器(在 Linux 上的 xserver 下)

javascript - 使用 jquery 动态创建 ul li

c# - 如何在 Entity Framework 5 中表达 "has many through"关系?

php - 将数据插入数据库的正确方法是什么?

php - WordPress自定义登录数据库错误

php - 如何限制输入文本中显示的字符数?