Уже было очень хорошее решение. Я просто кладя общий код так, чтобы новичку получить полную помощь
<?php
extract($_GET); //you can send some parameter by query variable. I have sent table name in *table* variable
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=$table.csv");
header("Pragma: no-cache");
header("Expires: 0");
require_once("includes/functions.php"); //necessary mysql connection functions here
//first of all I'll get the column name to put title of csv file.
$query = "SHOW columns FROM $table";
$headers = mysql_query($query) or die(mysql_error());
$csv_head = array();
while ($row = mysql_fetch_array($headers, MYSQL_ASSOC))
{
$csv_head[] = $row['Field'];
}
echo implode(",", $csv_head)."\n";
//now I'll bring the data.
$query = "SELECT * FROM $table";
$select_c = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_array($select_c, MYSQL_ASSOC))
{
foreach ($row as $key => $value) {
//there may be separator (here I have used comma) inside data. So need to put double quote around such data.
if(strpos($value, ',') !== false || strpos($value, '"') !== false || strpos($value, "\n") !== false) {
$row[$key] = '"' . str_replace('"', '""', $value) . '"';
}
}
echo implode(",", $row)."\n";
}
?>
Я сохранил этот код в CSV-download.php
Теперь посмотрим, как я использовал эти данные для загрузки CSV файл
<a href="csv-download.php?table=tbl_vfm"><img title="Download as Excel" src="images/Excel-logo.gif" alt="Download as Excel" /><a/>
Поэтому, когда я нажал на ссылку, она загрузит файл, не забрав меня на страницу csv-download.php в браузере.
обратите внимание, что правила CSV важны. Чтобы обеспечить хорошее отображение, поместите двойные кавычки вокруг своих полей и не забудьте заменить двойные кавычки внутри полей двойными двойными кавычками: `echo '' '.str_replace (' '', '" "', $ record1). '","'. str_replace .... – Mala 2010-07-01 21:21:11
В целом, пожалуйста, следуйте RFC 4180 при создании CSV-файлов. http://tools.ietf.org/html/rfc4180 – 2011-04-21 17:43:43
Для уточнения правильного заголовка HTTP Content-Type для CSV является текст/csv, а не application/csv. Я сомневаюсь, что любой современный браузер будет заботиться в любом случае, но поскольку есть стандарты, мы могли бы также использовать их. – fentie 2010-10-15 21:08:17