使用上传的CSV中的值创建/填充表单

时间:2017-05-04 04:09:56

标签: php html mysql forms csv

我已经决定要完成我的任务,我需要获取在我的第一页上传的CSV文件,然后构建一个表单,用它填充输入的CSV值。

我有一个正常运行的CSV上传,但这是在保存之前查看CSV并对字段进行编辑。我有一个while循环,我认为我应该在里面构建表单。唯一的技巧是我构建了一个CSV数据数组,在上传时处理它,它的长度为229个元素。我需要构建表单名称来镜像它,所以我将基本上命名为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数据填充输入。

1 个答案:

答案 0 :(得分:0)

这是您创建表单的方法。每个表单元素都命名为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>';