【发布时间】:2014-08-28 12:49:24
【问题描述】:
Foreward:这里是 PHP 初学者。
我在从用户定义的设置动态创建的页面上创建了一个大表。它大约有 1600 行和 15 列。我还用这些数据填充了一个数组,其中 Key 0 = 第 1 行的所有值,用逗号分隔。键 1 = 第 2 行的所有值,以逗号分隔。
数组是在创建表时从循环中填充的,并且具有名称/结构:
$CSVOut[$CSVKey]
我已确认数组已填充并在第一页上正确显示。
我有一个使用以下代码调用“textexport.php”的按钮:
<?php
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");
outputCSV(array(
array("name 1", "age 1", "city 1"),
array("name 2", "age 2", "city 2"),
array("name 3", "age 3", "city 3")
));
function outputCSV($data) {
$output = fopen("php://output", "w");
foreach ($data as $row) {
fputcsv($output, $row); // here you can change delimiter/enclosure
}
fclose($output);
}
?>
TestExport.php 中的示例数组准确地导出了硬编码数组的 CSV。我已经搜索并尝试了多种方法,了解如何将数组 $CSVOut 从我的第一页获取到此页面并使用该函数填充我的 CSV,但它对我来说并没有组合在一起。
我尝试过 POST 方法(我已经能够在此页面上成功发布其他用户变量,所以我有点理解它的工作原理)并尝试了 SESSIONS(但还没有完全掌握这个概念)
我有几个问题:
1) 尝试将动态创建的 html 表导出为 CSV 的方法有多糟糕?
2) 最好(最简单?)的方法是什么?
3) 有人对如何执行此操作有一些指导/示例吗?
4) 是否可以反向执行 - 只需在填充数组的第一页上调用此函数?
对于这个项目中的所有其他内容,我已经能够找到现有的示例来适应我的项目,但我无法真正做到这一点。任何帮助将不胜感激。
【问题讨论】:
-
您有可用的后端存储吗?理想的方法是将用户创建的内容保存到数据存储中(如 MySQL 或 Mongo 或类似的东西)——此时您可以在闲暇时检索、处理和提供这些内容。
-
我想我可以 - 现在我刚刚在我的本地主机上进行测试。我不需要将这些实际存储任何时间,这就是我开始使用数组路由的原因。如果这个站点同时有多个人会发生什么 - 如果我正在写入同一个数据库,我如何确保我正确地为每个用户提供他们的 CSV? (我对 MySQL 一无所知,所以如果这个问题很明显,请原谅这个问题。
-
您很可能需要设置会话才能将用户及其数据正确地保存在一起。听起来您不需要太多处理 - 您是否考虑过仅使用 JavaScript 将其内容格式化为 CSV 并提供给他们进行复制和粘贴?还是必须以文件的形式下载?
-
它不必下载,表格可以复制/粘贴到任何电子表格类型的程序中,最终用户可以根据需要进一步操作数据。我可能只是保持这种方式,但我认为拥有按一个按钮的功能会很好,它会为他们打开一个 xls csv 文件