Le 18/01/2020 à 17:40, anne.guilde@??? a écrit :
> Le 18/01/2020 à 17:08, Edgar Bonet a écrit :
>> Bonsoir !
>>
>> Anne a écrit :
>>> Je veux utiliser dans mon php
>>> header("Content-type: text/plain");
>>> header('Content-Disposition: attachment; filename="'.$filename_vcf.'"');
>>
>> Je t'avais envoyé jeudi, en message privé, un patch pour faire
>> exactement ça (sauf que c'est "text/vcard"). Dans ce patch, j'encadre à
>> l'intérieur d'une fonction l'envoi du début de la page HTML :
>>
>> -- 8< ------------------------------------------------------------------
>> diff --git a/index.php b/index.php
>> index 24d474b..8062a43 100644
>> --- a/index.php
>> +++ b/index.php
>> @@ -18,6 +18,9 @@
>> */
>>
>> error_reporting(E_ALL & ~E_NOTICE); // report all errors except notices
>> +
>> +function print_html_header()
>> +{
>> echo '
>> <!DOCTYPE html>
>> <html lang="en">
>>
>> @@ -35,6 +38,7 @@
>> <div class="boxShadows" id="headline">
>> <h1>csv2vcf: convert *.csv to *.vcf</h1>
>> ';
>> +}
>> /* === examples for different vCard Versions according to Wikpedia ===
>> vCard 2.1
>>
>> [...]
>> -- 8< ------------------------------------------------------------------
>>
>> Le but est de *ne pas* envoyer ce HTML quand ce que tu veux est envoyer
>> un vCard en pièce jointe.
>>
>>> Le début du fichier php
>>>
>>> <!DOCTYPE html>
>>> <html lang="en">
>>> <head>
>>> [...]
>>
>> Ceci, comme tout ce qui n'est pas entre "<?php" et "?>", est envoyé
>> textuellement par l'interpréteur PHP au client. Comme expliqué dans la
>> page que tu as lu, à partir du moment où tu envoies du contenu au
>> client, l'interpréteur envoie des en-têtes, si ce n'est déjà fait.
>>
>> Solution : regarde comment c'est fait dans le patch que je t'ai envoyé.
>>
>
> con cette nana, je vous le jure.
> Je n'avais pas vu la pièce jointe.
>
> J'avais déjà remplacé les fwrite par des print
> C'était en clair dans le corps du mail!
>
> Je regarde tout cela avec la pièce jointe.
>
Merci Edgar
testé
Cela fonctionne très bien.
J'ai juste ajouté un print_html_header(); ici
---
else
{
print_html_header(); // ajout
echo '<form method="post" enctype="multipart/form-data">
<label for="file">Please select your File.csv then hit convert:</label>
---
Je n'aurais jamais pensé à faire
function print_html_header()
Le script php n'a presque plus rien à voir avec le script que j'avais
trouvé sur sourceforge.
https://sourceforge.net/projects/csv2vcf-php/
J'avais un souci avec
$delimiter = $_POST['_delimiter'] == 'tab' ? "\t" : $_POST['_delimiter'];
J'avais donc mis
$delimiter = $_POST['_delimiter'];
Je viens de re tester la ligne
$delimiter = $_POST['_delimiter'] == 'tab' ? "\t" : $_POST['_delimiter'];
Cela fonctionne très bien.
la partie du script
<select name="_delimiter" >
<option value=""></option>
<option value="'.$comma.'">Comma</option>
<option value="'.$semicolon.'">Semicolon</option>
<option value="'.$tab.'">Tab</option>
</select><br />
$comma = ',';
$semicolon = ';';
// $tab = ' ';
$tab = 'tab';
Ce qui ne fonctionnait pas c'était $tab = 'tab';
Je l'avais remplacé par la ligne en commentaire
Pourquoi cela fonctionne maintenant et pourquoi cela ne fonctionnait
pas, mystère.
J'ai mis le script sur pastebin
https://pastebin.com/afGGXZSN
=> ecureuil-php-csv-vcf-finalise (php csv2vcf: convert *.csv to *.vcf
finalisé)
Merci à tous ceux qui m'ont aidé
Anne