首页 > 解决方案 > PHP:无法在网页的表格中显示 csv 文件的数据

问题描述

我正在尝试从 CSV 文件中读取数据并将其显示在表格中。但是,所有数据都显示在单列中,而不是显示在多列中。

起初,我创建了一个表单并以下列方式将输入记录在 CSV 文件中:

<?php
# save the form data in csv file
$myfile = fopen("data.csv", "a+");
foreach ($_POST as $key) {
    fputcsv($myfile, explode(",", $key));
}
fclose($myfile);
?>

然后我使用 html 创建了一个表,并通过以下方式从文件中读取:

    <div class="container">
        <table>
            <tr>
                <th>Username</th>
                <th>Email</th> 
                <th>Password</th>
            </tr>
            <?php
            # read from the csv file
            $f = fopen("data.csv", "r");
            while (($line = fgetcsv($f)) !== false) {
                echo "<tr>\n";
                foreach ($line as $cell) {
                    echo "<td>" . htmlspecialchars($cell) . "</td>";
                }
                echo "</tr>\n";
            }
            fclose($f);
            echo "\n</table>";
            ?>
        </table>
    </div>

这是我得到的输出:
在此处输入图像描述

如您所见,所有输入都在单列中但我希望用户名、电子邮件和密码在各自的列中。

标签: phphtmlfilecsv

解决方案


您的问题是您将所有表单数据值写入第一段代码中的单独行,因此您在第二段代码中一次只读回一个值。你需要改变

foreach ($_POST as $key) {
    fputcsv($myfile, explode(",", $key));
}

fputcsv($myfile, $_POST);

推荐阅读