Discussion:
Provoquer un telechargement (vers l'utilisateur)
(trop ancien pour répondre)
Jacques-A
2009-03-09 14:33:23 UTC
Permalink
Bonsoir,

Dans un script, j'ai des appels à une base de donnée que je voudrais
exporter vers un tableur (Excel ou Open Office). Je pensais créer des lignes
séparées par des ; et l'envoyer vers la station cliente.
Je sais faire cela quand un fichier existe mais cela est-il possible "au
vol" ?

Merci de vos réponses,

Jacques
CrazyCat
2009-03-09 21:28:35 UTC
Permalink
Bonjour,
Post by Jacques-A
Dans un script, j'ai des appels à une base de donnée que je voudrais
exporter vers un tableur (Excel ou Open Office). Je pensais créer des
lignes séparées par des ; et l'envoyer vers la station cliente.
Je sais faire cela quand un fichier existe mais cela est-il possible "au
vol" ?
C'est tout à fait possible, il suffit de d'abord envoyer les bons
entêtes au navigateur pour lui signaler qu'il s'agit d'un téléchargement
de csv.

header("Content-disposition: attachment; filename=fichier.csv");
header("Content-Type: text/csv");
--
Réseau IRC Francophone: http://www.zeolia.net
Aide et astuces : http://www.g33k-zone.org
Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
Paul
2009-03-09 21:28:35 UTC
Permalink
Post by Jacques-A
Bonsoir,
Dans un script, j'ai des appels à une base de donnée que je voudrais
exporter vers un tableur (Excel ou Open Office). Je pensais créer des
lignes séparées par des ; et l'envoyer vers la station cliente.
Je sais faire cela quand un fichier existe mais cela est-il possible "au
vol" ?
Avec la fonction header ?
Post by Jacques-A
Merci de vos réponses,
De nada
Paul
Post by Jacques-A
Jacques
Aurelgadjo
2009-03-09 21:28:35 UTC
Permalink
Post by Jacques-A
Bonsoir,
Dans un script, j'ai des appels à une base de donnée que je voudrais
exporter vers un tableur (Excel ou Open Office). Je pensais créer des
lignes séparées par des ; et l'envoyer vers la station cliente.
Je sais faire cela quand un fichier existe mais cela est-il possible "au
vol" ?
Merci de vos réponses,
Jacques
Oui, il suffit d'envoyer les données mais en changeant/ajoutant des
headers via la fonction qui va bien, voir
http://fr.php.net/manual/fr/function.header.php .
Antoine Rouchet
2009-03-09 21:28:35 UTC
Permalink
Post by Jacques-A
Bonsoir,
Dans un script, j'ai des appels à une base de donnée que je voudrais
exporter vers un tableur (Excel ou Open Office). Je pensais créer des
lignes séparées par des ; et l'envoyer vers la station cliente.
Je sais faire cela quand un fichier existe mais cela est-il possible "au
vol" ?
Merci de vos réponses,
Jacques
Bonjour,

Oui bien sûr,

Il suffi de changer le type mime de la page générée en text/csv, et
d'envoyer ensuite le contenu du fichier.

(détails ici par exemple:
http://www.shaftek.org/publications/drafts/mime-csv/draft-shafranovich-mime-csv-02.html)

Antoine.
Pascal PONCET
2009-03-09 21:28:35 UTC
Permalink
Post by Jacques-A
Dans un script, j'ai des appels à une base de donnée que je voudrais
exporter vers un tableur (Excel ou Open Office). Je pensais créer des
lignes séparées par des ; et l'envoyer vers la station cliente.
Je sais faire cela quand un fichier existe mais cela est-il possible "au
vol" ?
Bonjour Jacques,

Oui, bien sûr que c'est possible.
Il suffit d'envoyer les lignes vers la sortie, après avoir passé les
bonnes en-têtes.

Exemple :

<?php
// En admettant que l'on récupère les données de la base
// dans le tableau multidimensionnel "$listeContacts".
$csv[] = "Nom;Prénom;Téléphone";
foreach( $listeContacts as $contact ) {
$ligne = array(
$contact["nom"],
$contact["prenom"],
$contact["telephone"]
);
$csv[] = implode( ";", $ligne );
}
$fichier = implode( "\r\n", $csv );
header( 'Content-Type: text/csv' );
header( 'Content-Disposition: attachment; Filename="contacts.csv"' );
exit( $fichier );
?>

Cordialement,
Pascal
Olivier Miakinen
2009-03-09 21:28:35 UTC
Permalink
Bonjour,
Post by Jacques-A
Dans un script, j'ai des appels à une base de donnée que je voudrais
exporter vers un tableur (Excel ou Open Office).
Ce sont les appels que tu veux envoyer vers le tableur, ou bien le
résultat de ces appels, c'est-à-dire des valeurs lues dans la base de
données ?
Post by Jacques-A
Je pensais créer des lignes
séparées par des ; et l'envoyer vers la station cliente.
Ah, donc tu ne crées pas un fichier au format Excel ou OpenOffice, mais
un fichier texte de type CSV, c'est ça ?
Cf. <http://fr.wikipedia.org/wiki/Comma-separated_values>.
Post by Jacques-A
Je sais faire cela quand un fichier existe mais cela est-il possible "au
vol" ?
Quel fichier ? Celui qui contient la base de données ? Ou bien tu veux
dire que tu sais créer un fichier en local, lequel fichier sera récupéré
par le client via un GET http, mais que tu ne sais pas retourner le
contenu directement en réponse au GET sans passer par un fichier local ?

Si ma dernière proposition est la bonne, alors il te manque peut-être la
syntaxe suivante :
header("Content-Type: text/plain");
ou bien :
header("Content-Type: text/csv");

Ou bien, est-ce que ce que tu cherches à faire est que le tableur fasse
de lui-même une requête HTTP vers ton script PHP ? Quoi qu'il en soit,
ta question n'est pas très claire.

Cordialement,
--
Olivier Miakinen
Loading...