Version complète: sur le forum Webmaster Hub : Comment récupérer les infos d' un formulaire en format CSV...
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
silv1
Bonjour!!!

Voici mon problème: en fait les données de mon formulaire sont à la fois envoyées par mail et stockées sur un fichier txt. Dans le fichier php qui gère le traitement des infos du formulaire j'ai inséré ces quelques lignes de code:

CODE
$datedujour = date('d/m/y/H:i:s');
$filename="./admin/liste.txt";
$fl=fopen($filename,"a+");
fwrite($fl,"''$datedujour'|'$nom'|'$prenom'|'$adressemail'|'$departement'|'$tel'|'$sqlinterets'|'$comments'|\n\r");
/* on ferme le fichier */
fclose($fl);


Tout marche nickel, les résultats du formulaires apparaissent sur le fichier liste.txt ; mais en fait j'aimerai obtenir directement un fichier au format csv avec séparateur point-virgule afin de rendre les données plus facilement exploitables.

Que dois-je faire au niveau du code pour parvenir à ce résultat? Merci d'avance pour votre aide smartass.gif

SILV1
captain_torche
Remplace ton fwrite par
CODE
fwrite($fl,"$datedujour;$nom;$prenom;$adressemail;$departement;$tel;$sqlinterets;$comments\n\r");

Après avoir traité toutes les variables pour en enlever les éventuels points-virgules et retours chariots, bien sûr.

Sinon, pourquoi utiliser un séparateur si complexe ? '|'
Dadou
Ben

CODE
$datedujour = date('d/m/y/H:i:s');
$filename="./admin/liste.csv";
$fl=fopen($filename,"a+");
fwrite($fl,"$datedujour;$nom;$prenom;$adressemail;$departement;$tel;$sqlinterets;$comments;\n\r");
/* on ferme le fichier */
fclose($fl);


Edit : Grillé sur le fil
silv1
Merci à tous les deux pour vos réponses si rapides a_thumbsup_20.gif Je vais tout de suite faire le changement!
SILV1
silv1
Au fait, pour supprimer les retours chariots, est-ce que ces quelques lignes de code peuvent faire l'affaire?

CODE
<?php
$texte=nl2br($texte);
$texte=str_replace(CHR(10),"",$texte);
$texte=str_replace(CHR(13),"",$texte);

?>


Merci bien!
Silv1
blman
En PHP, il existe une fonction toute faite qui permet d'écrire du CSV : http://fr3.php.net/manual/fr/function.fputcsv.php

Attention à bien protéger tes champs si tu avais un délimiteur dans ton contenu (le CSV en serait faussé).
silv1
Merci Blman pour l'astuce mais je pense que mes connaissances en php sont trop limitées pour utiliser cette fonction blush.gif

Pour le moment j'ai simplement remplacé mes anciens séparateurs par des points virgules et ça marche imppécable!


Merci à tous pour votre aide si précieuse wink.gif
Silv1
Dadou
l'exemple utilisé pour cette fonction est très facilement adaptable à ton cas

CODE
<?php

$list = array (
    '29/04/08/16:45:33;Anseaume;David;nom_AT_domaine.ext;76;0202020202;Internet, littérature...;Test',
    '29/04/08/15:38:24;Gates;Bill;bill_AT_microsoft.com;76;0202020202;Internet, littérature...;Test'
);

$fp = fopen('liste.csv', 'w');

foreach ($list as $line) {
    fputcsv($fp, split(',', $line));
}

fclose($fp);
?>
silv1
OK j'essaierai d'intégrer ce code...

Là depuis ce matin je galère pour enlever les retours chariots dans le champ commentaires (comments). J'ai essayé ça mais je suis pas du tout sûr de moi: blush.gif

CODE
$datedujour = date('d/m/y/H:i:s');
$filename="./admin/prospects.txt";
$comments = str_replace( array( "\r", "\n" ), '', $comments );
$fl=fopen($filename,"a+");
fwrite($fl,"''$datedujour;$nom;$prenom;$adressemail;$departement;$tel;$sqlinterets;$comments';\n\r");
fclose($fl);
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.