Partage
  • Partager sur Facebook
  • Partager sur Twitter

Export données vers fichier txt en PHP

8 février 2012 à 19:36:04

Bonjour!

Je voudrais faire l'export de certaines données de ma base vers un fichier.txt afin de l'importer dans un de nos logiciels.

Mais un souci se pose à moi, la structure du fichier doit être strictement ordonnée et je n'arrive pas à faire de saut de ligne avec "/n" ou "/r".

Par exemple (objectif à atteindre):

0 0 0 12500 08/02/2012 0 0 45 0 23
0 0 0 9500 08/02/2012 0 0 3 0 20

alors que ce que j'ai c'est:

0 0 0 12500 08/02/2012 0 0 45 0 23 0 0 0 9500 08/02/2012 0 0 3 0 20

(code que j'ai repris et adapter à mon problème)
<?php
include('config.php');
session_start();
header("Content-Type: application/r"); // 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.txt'); // je l'ai mis au format .doc... ca marche aussi
include "config.php" ; // mon fichier de connection a ma bdd

   $sql = "SELECT Recette,CdeLigne,Idchaufbill,Daterecette
FROM t_recette r, t_chauffeur c
WHERE c.Idchaufgesco = r.Idchaufgesco
AND Daterecette=now()";
  $requete=mysql_query($sql);
  $texte =""; // j'ouvre une variable texte
  $obs="0"; 
  $codecli = 0;
  $codecai = 0;
  $nom = '0';
  $type = '0';
  $heure=0;
  $prcremise=0;
  $mtremise=0;
  $totht=0;
  $mtht=0;
  $mtht1=0;
  $mtht2=0;
  $mtht3=0;
  $mttva1=0;
  $mttva2=0;
  $mttva3=0;
  $mttva=0;
  $marge=0;
  $reference="0";
  $nomven="0";
  $immat="0";
  
  while ($row=mysql_fetch_array($requete))
  {  
	
	$Daterecette = $row['Daterecette'];
	$Recette = $row['Recette']; //$ttc
	$Idchaufbill = $row['Idchaufbill'];
	$texte .= "$obs  $codecli  $codecai  $nom  $type  $Daterecette  $heure  $prcremise  $mtremise  $totht  $Recette  $mtht  $mtht1  $mtht2  $mtht3  $mttva1  $mttva2  $mttva3  $mttva  $marge  $reference  $Idchaufbill  $nomven  $immat \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 par avance pour votre aide
  • Partager sur Facebook
  • Partager sur Twitter
8 février 2012 à 20:40:28

Tu n'as pas moyen d'utiliser directement MySQL ?
http://dev.mysql.com/doc/refman/5.0/en/select.html
select ... OUTFILE ...

T.
  • Partager sur Facebook
  • Partager sur Twitter
8 février 2012 à 21:16:19

Je ne connaissais pas cette syntaxe alors du coup j'ai piocher sur google.

SELECT Idrecette,Daterecette,Recette INTO OUTFILE "D:/test.txt"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY "\n"
FROM t_recette;


J'ai testé avec MySQL Query Browser et il m'affiche l'erreur "Can't create/write to fle D:\test.txt (Errcode: 13)"

Can you help me? Merci. :)
  • Partager sur Facebook
  • Partager sur Twitter
26 novembre 2024 à 15:41:58

<form method="post" action="formulaire4.php">
<input type="text" name="nombre1" > <br/>
<input type="radio" name="calc" value="0" />+<br/>
<input type="radio" name="calc" value="1" />-<br/>
<input type="radio" name="calc" value="2" />*<br/>
<input type="radio" name="calc" value="3" />/<br/>
<input type="text" name="nombre2" > <br/>
<input type="submit" value="Enregistrer"> <br/>
  • Partager sur Facebook
  • Partager sur Twitter
26 novembre 2024 à 15:45:56

Bonjour,

Le message qui suit est une réponse automatique activée par un membre de l'équipe de modération. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

Pour plus d'informations, nous vous invitons à lire les règles générales du forum

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération
  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)