[PHP] Générer un fichier csv dans un dossier
mourad.hamama
Messages postés
4
Statut
Membre
-
jisisv Messages postés 3678 Statut Modérateur -
jisisv Messages postés 3678 Statut Modérateur -
Bonjour,
Dans mon application web j'ai créer un fichier PHP qui me génère un fichier csv à partir d'une table de ma base de donnée, à l'exécution tout marche très bien, le fichier se génère et le navigateur me donne la possibilité de télécharger ... sauf que moi j'aimerai bien l'enregistrer dans un répertoire précis sans le télécharger :s que faire et merci d'avance pour vos réponse
Voici le code de mon fichier :
Dans mon application web j'ai créer un fichier PHP qui me génère un fichier csv à partir d'une table de ma base de donnée, à l'exécution tout marche très bien, le fichier se génère et le navigateur me donne la possibilité de télécharger ... sauf que moi j'aimerai bien l'enregistrer dans un répertoire précis sans le télécharger :s que faire et merci d'avance pour vos réponse
Voici le code de mon fichier :
<?php
require_once('includs/config.php');
$host = '127.0.0.1'; // <-- db address
$user = 'root'; // <-- db user name
$pass = ''; // <-- password
$db = 'easychange_db';
$link = mysql_connect($host, $user, $pass) or die("pas de connexion." . mysql_error());
mysql_select_db($db) or die("Can not connect.");
$mois=$_POST["date"];
if($mois==1){
$mois2="JANVIER";}
elseif($mois==2){
$mois2="FEVRIER";}
elseif($mois==3){
$mois2="MARS";}
elseif($mois==4){
$mois2="AVRIL";}
elseif($mois==5){
$mois2="MAI";}
elseif($mois==6){
$mois2="JUIN";}
elseif($mois==7){
$mois2="JUILLET";}
elseif($mois==8){
$mois2="AOUT";}
elseif($mois==9){
$mois2="SEPTEMBRE";}
elseif($mois==10){
$mois2="OCTOBRE";}
elseif($mois==11){
$mois2="NOVEMBRE";}
elseif($mois==12){
$mois2="DECEMBRE";}
//////////////////// Entete:
$csv_output .= "BUREAU DE CHANGE:";
$csv_output .= ";";
$csv_output .= "SICIETE D4INTERMEDIATION EN MATIERE DE TRANSFERT DE FOND:";
$csv_output .= "\n";
$csv_output .= "N DE L'AUTORISATION DE L'OFFICE DES CHANGES::";
$csv_output .= ";";
$csv_output .= "Adr";
$csv_output .= "\n";
$csv_output .= "ADRESSE:";
$csv_output .= ";";
$csv_output .= "N";
$csv_output .= "\n";
$csv_output .= "MOIS:";
$csv_output .= ";";
$csv_output .= $mois2;
$csv_output .= ";";
$csv_output .= "ANNEE:";
$csv_output .= ";";
$csv_output .= date(Y);
$csv_output .= "\n";
$csv_output .= "\n";
/////////// Titres:
$csv_output .= "ETABLISSEMENT DE CREDIT
ET BANQUE AL-MAGHRIB";
$csv_output .= ";";
$csv_output .= "DEVISE";
$csv_output .= ";";
$csv_output .= "MONTANT EN DEVISES";
$csv_output .= ";";
$csv_output .= "CONTREVALEUR EN DIRHAMS";
$csv_output .= ";";
$csv_output .= "\n";
$req=mysql_query("select banque, denomination, SUM(montant) as mont, SUM(cv_dh) as eurodh from cession where MONTH(date)=".$mois." GROUP BY denomination");
while($row = mysql_fetch_array($req)){
$banque=$row['0'];
$denomination=$row['1'];
$montant=(DOUBLE)$row['2'];
$cv=(DOUBLE)$row['3'];
$csv_output .= $banque;
$csv_output .= ";";
$csv_output .= $denomination;
$csv_output .= ";";
$csv_output .= $montant;
$csv_output .= ";";
$csv_output .= $cv;
$csv_output .= ";";
$csv_output .= "\n";
}
//<------ csv
$filename ="Cession-".$mois.date("-Y-");
$filename .= NUMAUT;
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header( "Content-disposition: filename=".$filename.".csv");
print $csv_output;
exit;
?>
A voir également:
- [PHP] Générer un fichier csv dans un dossier
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier bin - Guide
- Dossier appdata - Guide
- Fichier rar - Guide
2 réponses
Salut,
a priori il s'agit simplement d'écrire les données dans un fichier. Cela n'a rien d'insurmontable.
Un petit tour par la documentation t'apprendra ce que tu as besoin de savoir pour y arriver :
https://www.php.net/manual/fr/function.file-put-contents.php
a priori il s'agit simplement d'écrire les données dans un fichier. Cela n'a rien d'insurmontable.
Un petit tour par la documentation t'apprendra ce que tu as besoin de savoir pour y arriver :
https://www.php.net/manual/fr/function.file-put-contents.php
Tu réinventes la roue en utilisant un code long, difficile à maintenir et à améliorer.
Au lieu d'utiliser une tétrachiée de tests, utilise une table de hashage:
Si ton code est bien écrit, il n'y a pas de nécessité de placer les intitulés de champ dans le CSV (mets les sur la première ligne)
Pourquoi cette tétrachiée de concaténations? Utilise sprintf.
En bref ton code (hors appel à la BDD peut se résumer en 10 lignes ;Ð
Gates gave ^H sold you the windows.
GNU gave us the whole house.(Alexandrin)
Au lieu d'utiliser une tétrachiée de tests, utilise une table de hashage:
johand@osiris: ~/src/CCM/php $ cat hash-test.php
<?php
$mois=1;
$months = array ("JANVIER", "FEVRIER");
$mois2= $months[$mois -1];
print $mois2;
?>
johand@osiris: ~/src/CCM/php $ php hash-test.php
JANVIERRéorganise ton code de manière à utiliser fputscsv par exemple https://www.php.net/manual/fr/function.fputcsv.php
Si ton code est bien écrit, il n'y a pas de nécessité de placer les intitulés de champ dans le CSV (mets les sur la première ligne)
Pourquoi cette tétrachiée de concaténations? Utilise sprintf.
En bref ton code (hors appel à la BDD peut se résumer en 10 lignes ;Ð
Gates gave ^H sold you the windows.
GNU gave us the whole house.(Alexandrin)