Сохранение данных с сайта в виде файла

Unlock
На сайте с 01.08.2004
Offline
758
1085

Ситуация такая. Утрировано, есть каталог товаров. Человек заходит на страницу с описанием конкретного товара. Надо сделать возможность сохранять данные на товар в виде файла. Пример очень похожий на мой здесь:

http://www.acros.be/DesktopModules/Acros_Search_Results/Acros_Search_Results.aspx?search_type=CatalogSearch&SearchString=indole

Внизу есть ссылка: Save as SDF

Вот в таком примерно виде надо сохранять. Все данные на "товар" находятся в мускуле. Подскажите пожалуйста как примерно реализуется подобная возможность?

Есть желание, - тысяча способов; нет желания, - тысяча поводов! /Петр-I/.
engh
На сайте с 24.07.2007
Offline
78
#1

Мне кажется, что нужно просто пользоваться тем же sql-запросом, который и выводит инфу о товаре на сайт и создавать на сервере, либо каждый раз формировать файл по ссылке save as.. в текстовом виде в нужном формате, т.е. выбираем нужные данные из базы данных и создаем файл для сохранения какой нам захочется :) или дело не в этом?

enough 4 U..
DI
На сайте с 03.01.2007
Offline
123
#2

Если так же утрированно - то формировать заголовки и содержимое, аналогичное обычному скачиванию файла. Вот, например, для csv (выдернул из контекста):


$filename = "export".date("dmY");
header("Content-Disposition: attachment; filename=\"$filename.csv\"");
header("Content-Type: application/x-force-download; name=\"$filename.csv\"");
header('Expires: 0');
if (USR_BROWSER_AGENT == 'IE') {
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
} else {
header('Pragma: no-cache');
}

echo $rec;
exit();

в переменную $rec можно запихнуть что угодно, что собственно и будет составлять контент файла.

PS: не претендую на абсолютную правильность, да и коду уже лет 5, но вроде до сих пор работает:)

Высказывание идиотского утверждения требует на порядок меньше усилий, чем его последовательное и обоснованное опровержение и более того, иногда это опровержение вообще невозможно. © (http://zhurnal.lib.ru/s/shapiro_m_a/raspidiota.shtml)
DI
На сайте с 03.01.2007
Offline
123
#3

дубль сообщения

Unlock
На сайте с 01.08.2004
Offline
758
#4

Тут два момент, сделать правильный sql запрос, с этим я наверное справлюсь, и второе, сохранение данных в файл. Со вторым сложнее. Но попробую сделать по той инфе что дали уже. Но если кто-то опишет процесс подробнее, буду признателен :) Я например не понимаю как сделать ссылку на файл? Т.е. как вся процедура в скрипте выглядит. Чтобы например после нажатия на кнопку download происходило формирование файла и его загрузка пользователю. Извините если сумбурно пишу, но PHP и MySQL пока не мои друзья, и я с ними на Вы :)

DI
На сайте с 03.01.2007
Offline
123
#5

Ссылка должна вести на обычный php-скрипт. Код этого файла я привел выше.

Результат вашего sql-запроса нужно поместить в переменную $rec (если смотреть на код выше).

В результате, при переходе по ссылке на этот php-скрипт пользователю будет предложено сохранить файл с названием $filename.csv (имя можно сформировать самому, см. заголовки), в качестве содержимого будут данные из $rec. Все достаточно просто, с остальным можно поэкспериментировать:)

Unlock
На сайте с 01.08.2004
Offline
758
#6

DenIT, все, что-то я тормозил :)))) Спасибо. Буду разбираться.

P.S. Сейчас подумал, а не все так просто. Это же надо "писать" для этого скрипта доступ к базе, а как все это делает, представляю весьма смутно. Можно же наверное реализовать это внутри скрипта который генерирует контент? SQL запрос там уже по сути есть, т.к. данные на странице выводятся. Буду разбираться как сделать это все внутри уже имеющегося скрипта.

DI
На сайте с 03.01.2007
Offline
123
#7

Можно взять уже существующий запрос, но все равно придется менять формат вывода данных (не думаю, что вам нужна для импорта html-верстка). Можно сделать и внутри имеющегося скрипта, главное, потом не запутаться в коде (т.к. он разрастется из-за дополнительных настроек и условий).

Shtogrin
На сайте с 02.11.2006
Offline
95
#8
Unlock:
DenIT, все, что-то я тормозил :)))) Можно же наверное реализовать это внутри скрипта который генерирует контент? SQL запрос там уже по сути есть, т.к. данные на странице выводятся. Буду разбираться как сделать это все внутри уже имеющегося скрипта.

Возможно это правильное решение. Делаете ссылку на этот же скрипт, но добавляете аргумент output=myformat, в скрипте проверяете $_GET['output'] если оно есть и равно "myformat" отправляете нужные заголовки для типа файла (см. DenIT) и выводите данные в этом формате, иначе скрипт работает как раньше. Это можно сделать если у вас ничего не отдается браузеру до самого sql запроса.

www.shtogrin.com (http://www.shtogrin.com/). Канцтовары (http://www.invit.com.ua/). 1С Бухгалтерия (http://account.kiev.ua/).

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий