kristofkadavr
@kristofkadavr

Как сформировать csv файл на PHP без сохранения его на сервере?

Приветствую.
Пожалуйста, помогите вот с чем.
Имеется некая форма, в которую пользователи с помощью элемента вводят данные, которые потом "улетают" в .txt файл на сервере. Данные эти имеют следующий вид:
1.1.1-2/3 500
1.1.3-4/4 3
2.4.1-1/4 500
1.3.1-7/9 8
1.1.3-4/5 1
ну и так далее.
Что делает мой php код потом? - он открывает данный файл, обрабатывает строки в нем, и сортирует их.. То есть введенные мною выше данные при выводе будут иметь вид:
1.1.1-2/3 500
1.1.3-4/4 3
1.1.3-4/5 1
1.3.1-7/9 8
2.4.1-1/4 500

Все это я реализовал следующим кодом:
<form method="post" action="get_csv.php" name="main_form">  
$name = $_POST ['user'];
$file = ($name. ".txt");
$open = fopen($file, "r");
$contents = fread($open, filesize($file));
    fclose($open);
    echo ("Общий список: "."<br>");
    echo nl2br( htmlspecialchars($contents) ); 
    echo ("<hr>"."Сортированный список: "."<br>");

 // для сортировки
 $help =  file($name.".txt");
 array_multisort($help); 
 foreach($help as $row) // вывод по строчно
    echo ($row . '<input type="checkbox">' .'<br>');
    echo ("<hr>");
<button type="submit"> csv</button>
</form>


Что НЕ получается у меня: нужно сформировать csv файл с УЖЕ отсортированными данными, при этом csv файл не должен сохранятся на сервере, а сразу скачиваться на машинку пользователя.
  • Вопрос задан
  • 2408 просмотров
Решения вопроса 1
DevMan
@DevMan
например, так:
$data = [
	'1,2,3',
	'4,5,6',
	'7,8,9'
];

header('Content-Type: text/csv');
header('Content-disposition: attachment;filename=data.csv');
foreach ($data as $row) {
	echo $row, PHP_EOL;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@raxweb
нужно отдать заголовком соответствующий content-type и просто вывести содержимое файла тем же echo


Совершенно верно, вот простой скрипт с таким методом:
aceweb.ru/articles/php/export-csv.php
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы