[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как сохранить информацию из базы на компьютере?
Владимир55
Информация во всплывающую форму подгружается из JSON. Оператор выбирает таблицу, которую требуется сохранить на компьютере, и эти данные поступают в файл SERVER, на котором считывается из базы содержимое соответствующей таблицы (производитель, артикул, название, цена и количество). Все эти данные необходимо сохранить на компьютере в виде CSV файла. А вот как это сделать, я не знаю…
Владимир55
Спасибо, но проблема не в том, чтобы создать CSV файл, и не в использовании SELECT ... INTO OUTFILE. Сложность в том, что:
а). Файл нужно сохранить не на сервере, а на компьютере;
б). Используется всплывающая форма, т.е. заголовки уже переданы.
kaww
Владимир55
Получил аяксом список таблиц
Добавил в DOM форму
<form action="csv.php">
<select
name="table">
<option
value="table1">table1</option>
<option
value="table2">table2</option>
<option
value="table3">table3</option>
<option
value="table4">table4</option>
</select>
<input
type="submit" value="get csv" />
</form>

Скрипт csv.php отдает дамп
Так? Если да, то не ясно где возникла проблема?
Владимир55
Получил аяксом список таблиц и название будущего csv файла, в котором все это должно сохраниться на компьютере.

Дамп базы в скрипте отдается. Все данные есть.

Но как их превратить в файл на компе?

На экране торчит всплывающая форма от аякса. Её можно закрыть, если передать сообщение об успешном исполнении типа

		// Переадресация при успешном сохранении
$success_href = (empty($_POST['success_href'])) ? 'server.php' : $_POST['success_href'];
echo '<script id="success">location.href="'.$success_href.'";</script>';


Форма закроется, но скачивания-то нету!?

Значит, надо скачивать, пока форма открыта, и только после завершения скачивания её закрывать. Вот это и не получается!
kaww
Владимир55
обработчик формы содержит такой код
header("Content-Description: File Transfer\r\n");
header("Pragma: public\r\n");
header("Expires: 0\r\n");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0\r\n");
header("Cache-Control: public\r\n");
header("Content-Type: text/plain; charset=UTF-8\r\n");
header("Content-Disposition: attachment; filename=\"myfile.csv\"\r\n");
echo $myCsvFile;
exit;

при сабмите формы браузер покажет диалог сохранения файла
Владимир55
Цитата (kaww @ 15.05.2013 - 15:23)
Владимир55 при сабмите формы браузер покажет диалог сохранения файла

Это работает, но только в случае, когда приведенные Вами коды размещены на файле, не участвующем в обработке данных из Аякс. Вот так:
<?php
$myCsvFile = "Вова;Петя";

header("Content-Description: File Transfer\r\n");
header("Pragma: public\r\n");
header("Expires: 0\r\n");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0\r\n");
header("Cache-Control: public\r\n");
header("Content-Type: text/plain; charset=UTF-8\r\n");
header("Content-Disposition: attachment; filename=\"myfile.csv\"\r\n");
echo $myCsvFile;
exit;


А в реальном файле SERVER получается вот что:
<?php
// ЭКСПОРТ
if ($module == "export")
{
$gruppa = $_POST['gruppa']; // Название таблицы. В данном примере не используем.
$myfile = $_POST['file_export']; // Имя файла для вывода

$myCsvFile = "Вова;Петя"; // Эквивалент полученной из базы инфы

header("Content-Description: File Transfer\r\n");
header("Pragma: public\r\n");
header("Expires: 0\r\n");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0\r\n");
header("Cache-Control: public\r\n");
header("Content-Type: text/plain; charset=UTF-8\r\n");
header("Content-Disposition: attachment; filename=\"$myfile.csv\"\r\n");
echo $myCsvFile;
exit;

// Переадресация при успешном сохранении
$success_href = (empty($_POST['success_href'])) ? 'server.php' : $_POST['success_href'];
echo '<script id="success">location.href="'.$success_href.'";</script>';

}


Естесственно, что в результате просто выводится "Вова Петя". Если же закомментировать exit, то форма просто закрывается и никакого вывода тоже нет.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.