Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Provoquer un telechargement (vers l'utilisateur)

6 réponses
Avatar
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

6 réponses

Avatar
CrazyCat
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
Avatar
Paul
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


Avatar
Aurelgadjo
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 .
Avatar
Antoine Rouchet
"Jacques-A" wrote in message
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.
Avatar
Pascal PONCET
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
Avatar
Olivier Miakinen
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. <http://fr.wikipedia.org/wiki/Comma-separated_values>.

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