J'ai des données dans une base de données MySQL. J'envoie à l'utilisateur une URL pour obtenir leurs données sous forme de fichier CSV.
J'ai le courrier électronique du lien, la requête MySQL, etc. couvert.
Comment puis-je, lorsqu'ils cliquent sur le lien, avoir une fenêtre contextuelle pour télécharger un CVS avec l'enregistrement à partir de MySQL?
J'ai déjà toutes les informations pour obtenir le dossier. Je ne vois tout simplement pas comment PHP doit créer le fichier CSV et les laisser télécharger un fichier avec une extension .csv.
php
csv
download
http-headers
d -_- b
la source
la source
php: // sortie
fputcsv
la source
outputCSV
fonction est inutilement compliquée. Vous pouvez justeforeach
terminer$array
, en envoyant directement ses valeursfputcsv
. Pas besoin de ça__outputCSV
et duarray_walk
:)foreach($data as $vals) {fputcsv($filehandler,$vals);}
"Prévalence","age 1","city 1"
idées? Jouer avec UTF-8 n'a pas aidé jusqu'à présent.Voici une version améliorée de la fonction de php.net publiée par @Andrew.
Il est vraiment facile à utiliser et fonctionne très bien avec les jeux de résultats MySQL (i) / PDO.
N'oubliez pas
exit()
de l'appeler si vous avez terminé avec la page.la source
fputcsv($outstream, array_keys($results[0]));
juste avant votreforeach
pour inclure également les en-têtes de colonne.En plus de tout ce qui a déjà été dit, vous devrez peut-être ajouter:
Il est très utile lors de la gestion de fichiers contenant plusieurs langues, comme les noms de personnes ou les villes.
la source
Le fil est un peu vieux, je sais, mais pour référence future et pour les noobs comme moi:
Tout le monde ici explique comment créer le CSV, mais manque une partie fondamentale de la question: comment créer un lien. Pour établir un lien vers le téléchargement du fichier CSV, il vous suffit de créer un lien vers le fichier .php, qui à son tour répond comme étant un fichier .csv. Les en-têtes PHP font cela. Cela permet des trucs sympas, comme l'ajout de variables à la chaîne de requête et la personnalisation de la sortie:
my_csv_creator.php peut fonctionner avec les variables fournies dans la chaîne de requête et par exemple utiliser des requêtes de base de données différentes ou personnalisées, modifier les colonnes du CSV, personnaliser le nom de fichier, etc., par exemple:
la source
Créez votre fichier, puis renvoyez-y une référence avec l'en-tête correct pour déclencher l'enregistrement sous - modifiez les éléments suivants si nécessaire. Mettez vos données CSV dans $ csvdata.
la source
Voici un exemple de travail complet utilisant PDO et incluant des en-têtes de colonne:
la source
Créez d'abord des données sous forme de chaîne avec une virgule comme délimiteur (séparées par ","). Quelque chose comme ça
la source
Hé ça marche très bien .... !!!! Merci Peter Mortensen et Connor Burton
?>
la source
Méthode simple -
Ainsi, chaque ligne du
$data
tableau ira à une nouvelle ligne de votre fichier CSV nouvellement créé. Il ne fonctionne que pour PHP 5 et versions ultérieures.la source
Vous pouvez simplement écrire vos données dans CSV en utilisant la fonction fputcsv . regardons l'exemple ci-dessous. Écrire le tableau de liste dans un fichier CSV
la source
Le moyen le plus simple consiste à utiliser une classe CSV dédiée comme celle-ci:
la source
Au lieu de:
Utilisation:
la source
Déjà une très bonne solution est venue. Je mets juste le code total pour qu'un débutant obtienne une aide totale
J'ai enregistré ce code dans csv-download.php
Maintenant, voyez comment j'ai utilisé ces données pour télécharger le fichier csv
Donc, lorsque j'ai cliqué sur le lien, il télécharge le fichier sans m'amener à la page csv-download.php du navigateur.
la source
Pour qu'il l'envoie au format CSV et lui donne le nom du fichier, utilisez header ():
http://us2.php.net/header
En ce qui concerne la création du CSV lui-même, il vous suffit de parcourir l'ensemble de résultats, de formater la sortie et de l'envoyer, comme vous le feriez pour tout autre contenu.
la source
Écrire votre propre code CSV est probablement une perte de temps, utilisez simplement un package tel que league / csv - il traite de toutes les choses difficiles pour vous, la documentation est bonne et elle est très stable / fiable:
http://csv.thephpleague.com/
Vous devrez utiliser le compositeur. Si vous ne savez pas ce qu'est un compositeur, je vous recommande fortement de jeter un œil: https://getcomposer.org/
la source
la source
Comment écrire dans un fichier CSV en utilisant un script PHP? En fait, je le cherchais aussi. C'est une tâche facile avec PHP. fputs (gestionnaire, contenu) - cette fonction fonctionne efficacement pour moi. Vous devez d'abord ouvrir le fichier dans lequel vous devez écrire du contenu à l'aide de fopen ($ CSVFileName, 'wb').
la source
Mettez dans la
$output
variable les données CSV et l'écho avec les en-têtes correctsla source