Dire que j'ai stocké une requête dans une variable appelée $ query. Je veux créer un petit hyper lien appelé "exporter en CSV" sur la page de résultats. Comment puis-je faire cela?Exporter le résultat de la requête au format CSV via PHP
7
A
Répondre
11
$query = "SELECT * FROM table_name";
$export = mysql_query ($query) or die ("Sql error : " . mysql_error());
$fields = mysql_num_fields ($export);
for ($i = 0; $i < $fields; $i++)
{
$header .= mysql_field_name($export , $i) . "\t";
}
while($row = mysql_fetch_row($export))
{
$line = '';
foreach($row as $value)
{
if ((!isset($value)) || ($value == ""))
{
$value = "\t";
}
else
{
$value = str_replace('"' , '""' , $value);
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim($line) . "\n";
}
$data = str_replace("\r" , "" , $data);
if ($data == "")
{
$data = "\n(0) Records Found!\n";
}
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=your_desired_name.xls");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\n$data";
5
ehm?
<a href="yourexport.php" title="export as csv">Export as CSV</a>
et si vous cherchez Wich script peut faire:
$myArray = array();
$fp = fopen('export.csv', 'w');
foreach ($myArray as $line) {
fputcsv($fp, split(',', $line));
}
fclose($fp);
3
CSV = Comma Separated Values = Séparer vos valeurs par des virgules
vous devez echo/imprimer votre ligne de résultat par ligne, séparés par une virgule (,).
Je suppose que votre requête $ est le jeu de résultats de votre requête, qui est un tableau associatif:
while($query = mysql_fetch_assoc($rs)) {
// loop till the end of records
echo $query["field1"] . "," . $query["field2"] . "," . $query["field3"] . "\r\n";
}
où rs $ est la poignée de ressources.
Pour que le navigateur affiche une boîte de téléchargement, vous devez définir l'en-tête au début du fichier (en supposant que votre nom de fichier est export.csv):
header("Expires: 0");
header("Cache-control: private");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Description: File Transfer");
header("Content-Type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=export.csv");
Ca y est!
p.s. Cette méthode ne laissera pas un fichier physique dans le serveur. Si vous avez l'intention de générer un fichier sur le serveur, utilisez les fonctions traditionnelles fopen et fwrite.
Une combinaison d'ArneRie et votre réponse fonctionne parfaitement bien – Arc