|
|
|
| Как можно сохранить таблицу базы данных в Excel файл или в соответствии с определенным запросом данные таблицы при нажатии на кнопку? | |
|
|
|
|
|
|
|
для: lightning.say
(13.06.2011 в 05:23)
| | Проще всего сформировать CSV-файл (этот текстовый формат) и отдать пользователю, можно даже ему расширение XLS назначить - Excel его прекрасно открывает и понимает. А если расширение будет XLS, то первое же сохранение файла позволить конвертировать его в полноценный XLS-файл. | |
|
|
|
|
|
|
|
для: cheops
(13.06.2011 в 11:16)
| | да, а как вообще можно сформировать файл из таблицы? или где об этом почитать не подскажете? | |
|
|
|
|
|
|
|
для: lightning.say
(13.06.2011 в 12:32)
| | Это можно сделать средствами PHP, записав файл или просто отправив его клиенту, послав соответствующие заголовки
<?php
$filename = "result.xls";
header("Content-Disposition: attachment; filename=$filename");
header("Content-type: application/vnd.ms-excel");
header("Content-length: ".размер_файла);
// Содержимое файла.
?>
| CSV-файл - это очень простой, если не сказать примитивный, формат: каждая запись расположена на отдельной строке, столбцы разделены точкой запятой или символом табуляции. Всех проще взять готовый XLS-файл и сохранить его как CSV-файл. Затем открыть и посмотреть как он устроен. | |
|
|
|
|
|
|
|
для: cheops
(13.06.2011 в 12:52)
| | Ну вот допустим есть конкретная таблица names в бд mybase
id_catalog name description pos hide
1 вася 1 show 0
2 петя 2 show 0
10 Алиса 4 show 0
9 Юля 3 show 0
11 Максим 5 show 0
12 Таня 6 show 0
Как я ее сохраню в табличный файл? | |
|
|
|
|
|
|
|
для: lightning.say
(13.06.2011 в 14:01)
| | Можно начать отталкиваться от следующего скрипта
<?php
...
$query = "SELEC * FROM tbl";
$tbl = mysql_query($query);
if(!$tbl) exit("Ошибка выполнения запроса - ".mysql_error());
if(mysql_num_rows($tbl))
{
$line = array();
while($result = mysql_fetch_row($tbl))
{
$line[] = implode(";", $result);
}
file_put_contents("file.xls", implode("\r\n", $line));
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(13.06.2011 в 14:20)
| | Спасибо! | |
|
|
|
|
|
|
|
для: cheops
(13.06.2011 в 12:52)
| | сделал так
<?
...
$filename = "result.csv";
$query = "SELECT * FROM names";
$tbl = mysql_query($query);
if(!$tbl) exit("Ошибка выполнения запроса - ".mysql_error());
if(mysql_num_rows($tbl))
{
$line = array();
while($result = mysql_fetch_row($tbl))
{
$line[] = implode(";", $result);
}
file_put_contents($filename, implode("\r\n", $line));
}
header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=$filename");
readfile($filename);
?>
|
но почему-то при попытке сделать другой запрос более сложный с where или просто перечислить имена столбцов которые нужны, сохраняется снова же вся таблица, почему? | |
|
|
|
|
|
|
|
для: lightning.say
(14.06.2011 в 04:44)
| | Хм... возможно дело в кэшировании, временное переименование файла ничего не дает? | |
|
|
|
|
|
|
|
для: cheops
(14.06.2011 в 09:59)
| | ну да $filename изменил, стал воспринимать запросы | |
|
|
|