Eu tenho dados em um banco de dados MySQL. Estou enviando ao usuário uma URL para obter seus dados como um arquivo CSV.
Eu tenho o e-mail do link, consulta MySQL, etc. coberto.
Como, quando clicam no link, pop-up para baixar um CVS com o registro do MySQL?
Eu tenho todas as informações para obter o registro já. Eu simplesmente não vejo como o PHP cria o arquivo CSV e permite que eles baixem um arquivo com uma extensão .csv.
php
csv
download
http-headers
d -_- b
fonte
fonte
php: // saída
fputcsv
fonte
outputCSV
função é desnecessariamente complicada. Você podeforeach
terminar$array
, enviando seus valores diretamente parafputcsv
. Não há necessidade para isso__outputCSV
eoarray_walk
:)foreach($data as $vals) {fputcsv($filehandler,$vals);}
"Prévalence","age 1","city 1"
Alguma idéia? Mexer com UTF-8 não ajudou até agora.Aqui está uma versão aprimorada da função do php.net que @Andrew postou.
É realmente fácil de usar e funciona muito bem com os conjuntos de resultados MySQL (i) / PDO.
Lembre-se de
exit()
depois de ligar para isso se você tiver terminado a página.fonte
fputcsv($outstream, array_keys($results[0]));
pouco antesforeach
de incluir também os cabeçalhos das colunas.Além de tudo o que foi dito, você pode precisar adicionar:
É muito útil ao manipular arquivos com vários idiomas, como nomes de pessoas ou cidades.
fonte
O tópico é um pouco antigo, eu sei, mas para referência futura e para noobs como eu:
Todos os outros aqui explicam como criar o CSV, mas perdem uma parte básica da pergunta: como vincular. Para vincular o download do arquivo CSV, basta vincular o arquivo .php, que por sua vez responde como um arquivo .csv. Os cabeçalhos PHP fazem isso. Isso permite coisas legais, como adicionar variáveis à string de consulta e personalizar a saída:
my_csv_creator.php pode trabalhar com as variáveis fornecidas na string de consulta e, por exemplo, usar consultas de banco de dados diferentes ou personalizadas, alterar as colunas do CSV, personalizar o nome do arquivo e assim por diante, por exemplo:
fonte
Crie seu arquivo e retorne uma referência a ele com o cabeçalho correto para acionar o Save As - edite o seguinte, conforme necessário. Coloque seus dados CSV em $ csvdata.
fonte
Aqui está um exemplo de trabalho completo usando o DOP e incluindo cabeçalhos de coluna:
fonte
Primeiro, crie dados como uma String com vírgula como delimitador (separado por ","). Algo assim
fonte
Ei, funciona muito bem .... !!!! Obrigado Peter Mortensen e Connor Burton
?>
fonte
Método simples -
Portanto, cada linha da
$data
matriz irá para uma nova linha do seu arquivo CSV recém-criado. Funciona apenas para o PHP 5 e posterior.fonte
Você pode simplesmente gravar seus dados em CSV usando a função fputcsv . vamos dar uma olhada no exemplo abaixo. Escreva a matriz da lista no arquivo CSV
fonte
A maneira mais fácil é usar uma classe CSV dedicada como esta:
fonte
Ao invés de:
Usar:
fonte
Já veio uma solução muito boa. Estou apenas colocando o código total para que um novato obtenha ajuda total
Salvei este código em csv-download.php
Agora veja como eu usei esses dados para baixar o arquivo csv
Então, quando clico no link, baixe o arquivo sem me levar à página csv-download.php no navegador.
fonte
Para enviá-lo como um CSV e dar o nome do arquivo, use header ():
http://us2.php.net/header
No que diz respeito à criação do CSV, você apenas percorre o conjunto de resultados, formata a saída e envia-a, como faria com qualquer outro conteúdo.
fonte
Escrever seu próprio código CSV provavelmente é uma perda de tempo, basta usar um pacote como league / csv - ele lida com todas as coisas difíceis para você, a documentação é boa e é muito estável / confiável:
http://csv.thephpleague.com/
Você precisará usar o compositor. Se você não sabe o que é compositor, eu recomendo que você dê uma olhada: https://getcomposer.org/
fonte
fonte
Como escrever no arquivo CSV usando script PHP? Na verdade, eu também estava procurando por isso. É uma tarefa fácil com PHP. fputs (manipulador, conteúdo) - essa função funciona eficientemente para mim. Primeiro, você precisa abrir o arquivo no qual precisa gravar o conteúdo usando fopen ($ CSVFileName, 'wb').
fonte
Coloque na
$output
variável os dados CSV e ecoe com os cabeçalhos corretosfonte