Provoquer un telechargement (vers l'utilisateur)

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
CrazyCat
Le #18864161
Bonjour,

Jacques-A wrote:
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
Le #18864171
Jacques-A a écrit :
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 ?
Merci de vos réponses,


De nada
Paul

Jacques


Aurelgadjo
Le #18864181
Jacques-A a écrit :
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
Le #18864191
"Jacques-A" news:49b415f4$0$11785$
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
Le #18864201
Jacques-A a écrit :
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( "rn", $csv );
header( 'Content-Type: text/csv' );
header( 'Content-Disposition: attachment; Filename="contacts.csv"' );
exit( $fichier );
?>

Cordialement,
Pascal
Olivier Miakinen
Le #18864211
Bonjour,

Le 09/03/2009 15:33, Jacques-A a écrit :

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 ?

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.
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
Publicité
Poster une réponse
Anonyme