Export vers fichier texte

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Export vers fichier texte

Re: Export vers fichier texte

par michael410 » 12 févr. 2011, 16:58

bonjour
en essayant d'utiliser ce script, le fichier est écrit à la racine de mon site (nom : D:\fichier.txt )mais pas sur mon Disque Dur en local, est ce un problème de config mysql?

Re: Export vers fichier texte

par stealth35 » 15 oct. 2010, 15:41

Pour que la solution de stealth35 fonctionne il faut que mysql ait la permission pour écrire dans un fichier... ce qui n'est pratiquement jamais le cas sur des serveurs mutualisés. Mais cette solution est fonctionnelle en local sur mon serveur d'évaluation.
c'est plus l'utilisateur qui a le privilège ou pas :wink:

Re: Export vers fichier texte

par AB » 15 oct. 2010, 15:29

Pour que la solution de stealth35 fonctionne il faut que mysql ait la permission pour écrire dans un fichier... ce qui n'est pratiquement jamais le cas sur des serveurs mutualisés. Mais cette solution est fonctionnelle en local sur mon serveur d'évaluation.

Re: Export vers fichier texte

par metallifanca » 15 oct. 2010, 13:37

mon fichier de connection fonctionne vu que j'ai juste refait l'include, donc ca vient pas de la.
Ouioui... mais t'en fait pas, ma solution me convient... et j'ai remis le code que tu m'a donné au cas ou quelqu'un d'autre y arriverait...

Re: Export vers fichier texte

par stealth35 » 15 oct. 2010, 13:18

t'avais bien inclue ton connection.inc.php ?

Re: Export vers fichier texte

par metallifanca » 15 oct. 2010, 12:07

Ben voila alors, pour ceux qui rechercheraient la même chose que moi, la méthode de stealth35 si elle fonctionne :
ini_set('mysql.trace_mode',  1);
       
//mysql_connect('127.0.0.1', 'root', '');
//mysql_select_db('test');
       
$temp = tmpfile();
$meta = stream_get_meta_data($temp);
$filename = mysql_real_escape_string($meta['uri']);
fclose($temp); 

$sql  = "SELECT * INTO OUTFILE '$filename' FROM `diary` ORDER BY `date` ASC";
$query = mysql_query($sql);

readfile($filename);
Et si ca marche pas, la mienne :
<?php
session_start();
 //date actuelle
$date = gmdate('D, d M Y H:i:s');
 header("Content-Type: application/msword"); // pas génial comme type mime, mais bon, en rtf ca fonctionnait pas tout a fait pour l'utilisation que je voulais en avoir. Et en text/plain je n'arrivais pas a avoir les retours a la ligne normaux...
header('Content-Disposition: attachment; filename=test.doc'); // je l'ai mis au format .doc... ca marche aussi
header('Last-Modified: '. $date . ' GMT');
header('Expires: ' . $date);
//header specifique IE parce que sinon il aime pas (trouvé sur un autre site d'aide)
if(preg_match('/msie|(microsoft internet explorer)/i', $_SERVER['HTTP_USER_AGENT'])){
  header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  header('Pragma: public');
}else{
  header('Pragma: no-cache');
}
include "connection.inc.php" ; // mon fichier de connection a ma bdd

   $sql = "select * from diary order by date ASC";
  $requete=mysql_query($sql);
  $texte =""; // j'ouvre une variable texte
  while ($row=mysql_fetch_array($requete)){
  $tmpstmp = $row['date'];
 $datej= date('d-m-Y', $tmpstmp);
    $texte .= $datej." - ".$row['entree']."\n"; //j'ajoute les lignes contenues dans ma bdd a ma variable texte avec un retour a la ligne a chaque passage de la boucle
        };
echo $texte; //et on renvoie tout sur un fichier .doc téléchargeable...
 
        ?>
Bonne journée à tous :)

Re: Export vers fichier texte

par xTG » 15 oct. 2010, 12:01

Peut être que ton compte mysql ne possède pas les droits sur cette fonction.

Re: Export vers fichier texte

par metallifanca » 15 oct. 2010, 11:55

Ben... ca marche pas...

Code : Tout sélectionner

Warning: mysql_query() [http://www.mysql.com/doc]: Access denied for user 'arnaud014'@'%0.248.211.%' (using password: YES) in /public_html/diary/dl2.php on line 12 Warning: readfile(/tmp/phpraMoxR) [function.readfile]: failed to open stream: No such file or directory in /public_html/diary/dl2.php on line 14
A savoir, mon fichier de connection fonctionne vu que j'ai juste refait l'include, donc ca vient pas de la.

Donc j'en reviens a ma solution (pas propre, mais fonctionnelle). :D

Re: Export vers fichier texte

par stealth35 » 15 oct. 2010, 11:46

Oui, mais comment ? Il faut que ce soit moi qui demande a mysql de générer le fichier csv et puis le mettre a disposition des users? Si c'est ca ca ne m'intéresse pas vu qu'il y a des maj fréquentes et qu'il faudrait a chaque fois recréer le fichier en question. Non, mon système me convient comme ca, moins il y a besoin d'intervention de ma part, mieux c'est :-D
ca se fais avec INTO OUFILE :wink:
ini_set('mysql.trace_mode', 1);
	
//mysql_connect('127.0.0.1', 'root', '');
//mysql_select_db('test');
	
$temp = tmpfile();
$meta = stream_get_meta_data($temp);
$filename = mysql_real_escape_string($meta['uri']);
fclose($temp);	

$sql  = "SELECT * INTO OUTFILE '$filename' FROM `diary` ORDER BY `date` ASC";
$query = mysql_query($sql);

readfile($filename);

Re: Export vers fichier texte

par metallifanca » 15 oct. 2010, 11:32

Oui, mais comment ? Il faut que ce soit moi qui demande a mysql de générer le fichier csv et puis le mettre a disposition des users? Si c'est ca ca ne m'intéresse pas vu qu'il y a des maj fréquentes et qu'il faudrait a chaque fois recréer le fichier en question. Non, mon système me convient comme ca, moins il y a besoin d'intervention de ma part, mieux c'est :-D

Re: Export vers fichier texte

par stealth35 » 15 oct. 2010, 11:28

Oui, mais c'est pour que les utilisateurs puissent dl le contenu de la table, j'ai pas envie qu'ils aillent trifouiller dans ma bdd avec mysql
mysql te créer un fichier CSV direct, plus qu'a le récupérer en php après

Re: Export vers fichier texte

par metallifanca » 15 oct. 2010, 11:25

Oui, mais c'est pour que les utilisateurs puissent dl le contenu de la table, j'ai pas envie qu'ils aillent trifouiller dans ma bdd avec mysql

Re: Export vers fichier texte

par stealth35 » 15 oct. 2010, 11:24

tu sais que tu peux créer des CSV direct avec mysql, pas besion de boucle et compagnie

Re: Export vers fichier texte

par metallifanca » 15 oct. 2010, 11:23

Oui, la base c'est du sql...

Avec vos conseils et ceux d'un ami, j'ai réussi, en faisant comme ca :
<?php 
session_start();
 //date actuelle
$date = gmdate('D, d M Y H:i:s');
 header("Content-Type: application/msword"); // pas génial comme type mime, mais bon, en rtf ca fonctionnait pas tout a fait pour l'utilisation que je voulais en avoir. Et en text/plain je n'arrivais pas a avoir les retours a la ligne normaux...
header('Content-Disposition: attachment; filename=test.doc'); // je l'ai mis au format .doc... ca marche aussi
header('Last-Modified: '. $date . ' GMT');
header('Expires: ' . $date);
//header specifique IE parce que sinon il aime pas (trouvé sur un autre site d'aide)
if(preg_match('/msie|(microsoft internet explorer)/i', $_SERVER['HTTP_USER_AGENT'])){
  header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  header('Pragma: public');
}else{
  header('Pragma: no-cache');
}
include "connection.inc.php" ; // mon fichier de connection a ma bdd

   $sql = "select * from diary order by date ASC";
  $requete=mysql_query($sql);
  $texte =""; // j'ouvre une variable texte
  while ($row=mysql_fetch_array($requete)){
  $tmpstmp = $row['date'];
 $datej= date('d-m-Y', $tmpstmp); 
    $texte .= $datej." - ".$row['entree']."\n"; //j'ajoute les lignes contenues dans ma bdd a ma variable texte avec un retour a la ligne a chaque passage de la boucle
	};
echo $texte; //et on renvoie tout sur un fichier .doc téléchargeable...
  
	?>
Merci à tous...

Re: Export vers fichier texte

par stealth35 » 15 oct. 2010, 10:34

la base c'est du mysql ?