[PHP] Générer un fichier csv dans un dossier

Fermé
mourad.hamama Messages postés 2 Date d'inscription samedi 17 décembre 2011 Statut Membre Dernière intervention 13 novembre 2013 - Modifié par mourad.hamama le 17/12/2011 à 22:38
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 - 19 déc. 2011 à 04:09
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 :


<?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:

2 réponses

Giorgiolino Messages postés 253 Date d'inscription vendredi 15 mai 2009 Statut Contributeur Dernière intervention 2 mars 2015 52
18 déc. 2011 à 23:54
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
2
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
Modifié par jisisv le 19/12/2011 à 04:16
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:
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    
JANVIER
Ré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)
1