gpt4 book ai didi

php - Codeigniter 并生成 CSV 文件

转载 作者:行者123 更新时间:2023-12-03 02:55:50 32 4
gpt4 key购买 nike

这本身并不是一个问题,更多的是要求以最佳方式将查询从 Codeigniter 导出为可下载的 CSV。在 CI 中,我从 Controller (例如,成员)中的模型调用一个简单的查询(例如,select * from Members where country=123),代码如下:

$data['membercountries_query'] = $this -> Queries_model -> get_members_by_country($country_id);

这会导致我显示一个国家/地区成员的可读信息的 View 。我可以使用 $this->dbutil->csv_from_result($membercountries_query) 在 View 或 Controller 中轻松生成此结果的 CSV,并将其显示在 View 中。然后我想向用户展示一个按钮/超链接“下载结果为 CSV”,这将生成一个文件保存对话框。

我已经在谷歌上进行了大量的搜索和搜索,并且有许多不同复杂程度的可能解决方案。我想到也许添加一个 Controller 函数(例如 member/create_csv($data)),但无法想出一种方法将 CSV $data 从页面链接传递给它(这可能完全是另一个问题)。

有人可以建议一下创建​​ CSV 下载链接的最简单、最快捷的方法吗?出于安全原因,我不希望将 CSV 文件保存到服务器,然后创建指向已保存文件的链接。

如果能够创建一个通用的帮助器/函数来获取任何查询结果并生成可下载的 CSV,将会特别有用。

我很感谢 CI 人员制作了 dbutil 和下载帮助程序,最简单的方法必须同时涉及 csv_from_result()force_download(),但我只是想不出在这么晚的时候将两者结合在 View (或其他)中的方法:(

最佳答案

基于问题“Download csv from codeigniter mysql”中的第三个解决方案,我采用了一个相当简单的解决方案,即具有模型函数:

function csv($query, $filename = 'CSV_Report.csv')
{
$this->load->dbutil();
$this->load->helper('file');
$this->load->helper('download');
$delimiter = ",";
$newline = "\r\n";
$data = $this->dbutil->csv_from_result($query, $delimiter, $newline);
force_download($filename, $data);
}

在生成查询的 Controller 中,添加 $csv bool 参数,例如:

function membercountry($country_id = NULL, $csv = false)

并且在 Controller 函数中有一个条件,如果 $csv 为 true 或 1,它将调用模型函数:

    if ($csv)
{
$date = date('dmy');
$csvfile = "membercountry" . $date . ".csv";
$this -> Queries_model -> csv($data['membercountries_query'], $csvfile);
}

然后在查询结果 View 中,在浏览器中以人类可读的形式显示结果后,呈现一个超链接:

<a href="queries/membercountry/<?=$country_id?>/1">Download result as CSV</a>

单击时,它会以 $csv 为 true 重新调用 Controller ,然后调用模型函数 csv()。

对于我的应用程序来说,这是一个相当通用的解决方案,它只需要在 Controller 函数中添加几行额外的代码,并且无需将 CSV 文件写入服务器或具有包含详细且复杂标题的特定 View 。这不是解决方案,只是一个相当简单、快速但肮脏的解决方案,这里的 CI 开发人员可能会觉得有用。再次非常感谢 CI 社区创建 dbutils class这使得输出 CSV 变得轻而易举。

编辑:从 MVC 的角度来看,将 csv() 函数放在 Controller 而不是模型中,并通过 $this -> csv() 调用它可能会更整洁。

关于php - Codeigniter 并生成 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26108295/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com