PHP从另一页面导出数组/表格为CSV

时间:2014-08-28 12:49:24

标签: php arrays csv

前瞻:PHP初学者。

我在一个页面上创建了一个大表,该表是根据用户定义的设置动态创建的。它大约有1600行和15列。我还用这个数据填充了一个数组,其中Key 0 =用逗号分隔的第1行的所有值。键1 =用逗号分隔的第2行的所有值。

在创建表时,Array从循环中填充并具有名称/结构:

$ 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)是否可以反向执行 - 只需在填充数组的第一页上调用此函数?

对于这个项目中的其他所有内容,我已经能够找到适合我项目的现有示例,但我还没有能够真正做到这一点。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果您不想(或没有时间)打扰后端数据存储和用户会话,最好的解决方案可能只是使用JavaScript / jQuery来切割和切割用户拥有的动态输出创建为CSV格式的字符串,用户可以复制和粘贴。简单地抓住他们制作的表并处理每一行就足够了......使用jQuery会使它变得更容易。

var rows = $('#example tbody').find('tr');
var output_string = '';

rows.each(function() {
    var column_data = jQuery.map( $(this).find('td'), function(datum) {
        return $(datum).text().replace(/\s/gi,'');        
    });
    output_string += column_data.join(',')+'\n';
});

$('#output').val(output_string);

上面的代码将获取HTML表格的正文部分(忽略您定义的任何表格标题),并将每个表格行转换为以换行符终止的逗号分隔值行。

然后将创建的输出转储到textarea中。

JSFiddle Example

这并不像暂时将内容保存到Mongo / MySQL并通过单击按钮将其提供给用户那样花哨 - 但它可以快速完成而无需整理数据存储,会话,身份验证,然而,这些是完整网络堆栈的相当常见的部分,所以我建议你花点时间在某些时候熟悉它们。这是一些有用的链接。

WampXAMPP是完整服务的PHP,MySQL和Apache堆栈,非常适合启动和运行开发,而不会浪费大量时间摆弄服务器配置。

here是PHP中Sessions的基本解释/教程。还要考虑一点点阅读,PHP开发人员可能会遇到很多安全隐患,而this book涵盖了最可以避免的问题。