créer un fichier csv à partir de données mysql

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 : créer un fichier csv à partir de données mysql

par Invité » 29 août 2007, 19:30

Du coup je recopie ma réponse :


première remarque, \r est le signe de fin de ligne sous Mac. Sous Unix c'est \n. et sous windows, \r\n.

Je te conseille d'utiliser la constante
PHP_EOL
pour rendre ton compte portable et être sur d'obtenir le caractère de fin de ligne.

par sam01 » 29 août 2007, 11:30

j'obtiens exactement le mêm message avec cela :

SELECT * 
INTO OUTFILE '/tmp/lldiffusion_export.csv'
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n'
FROM lldiffusion_produit 

le message d'erreur est :

#1045 - Access denied for user: 'lldiffusion@%' (Using password: YES)

par zeus » 28 août 2007, 16:36

Pour les authorisations d'accès MySQL/PHP, c'est simple, il te suffit d'écrire ton fichier dans le répertoire /tmp et de le déplacer via PHP avec un rename() ;)

par orgerix » 28 août 2007, 16:33

Ou alors qu'elle est desactivé par l'hébergeur.

par Ryle » 28 août 2007, 15:32

Ok, ca veut dire que tu ne dois pas être en php5 si la fonction n'est pas présente... bah du coup je crois que tu en est réduit à un simple fputs() ou fwrite().

Après selon le type des données que tu récupères, pour les convertir au format csv par défaut, il te faut, uniquement pour les chaines de caractères, si la chaine contient au moins une guillemet ou un retour à la ligne :
- doubler toutes les guillemets qu'elle contient (avec str_replace() par exemple)
- et encapsuler la chaine avec des guillemets

Après il n'y a plus qu'à l'insérer dans ton fichier, et ouvrir le fichier généré dans ton tableur préféré pour voir le résultat :)

par sam01 » 28 août 2007, 15:13

je te remercie j'avias bien pensé à la focntion select oufile mais j'ai des problème d'autorisation sur mon serveur, il me dit user not autorised...

alors je me suis rabattu sur lla méthode suivante :

	$request = "SELECT * FROM lldiffusion_produit";
	if ($result = mysql_query($request))
	{
		while($ligne = mysql_fetch_row($result))
		{
			$id = $ligne[0];
			$marque= $ligne[1];
			$desigantion = $ligne[2];
			$univers = $ligne[3];
			$categorie = $ligne[4];
			$sous_categorie = $ligne[5];
			$resume_court = $ligne[6];
			$prix_ttc = $ligne[8];
			$frais_port = $datap['frais_port_inf'];
			$disponibilité = $ligne[9];
			$chaine ="$id;$marque;$designation;$univers $categorie $sous_vcategorie;$resume_court;$prix_tcc;$frais_port;$disponibilité;\r";
			fputcsv($fp, $chaine); 
		} 
	}	

mais j'ai le message d'errur suivant :

Fatal error: Call to undefined function: fputcsv() in /home.10.3/lldiffus/www/gerant_new_new.php on line 65


j'ai l'impression que la focntion fputcsv n'est pas connue./
Existet-il quelque chose qui remplacerais cette focntion?
Merci d'avance pour votre aide.

par Ryle » 28 août 2007, 10:24

Tiens, je ne connaissais pas.. en tout cas je sens que ça va me servir :)

par zeus » 28 août 2007, 10:19

Tiens, tu me rappelles que je doit faire un tutorial sur l'instruction "SELECT INTO outfile" :-k

En attendant, il reste que c'est l'instruction que je te conseille d'utiliser ;)

Le principe général, c'est que tu écrit ton SELECT pour qu'il te sélectionne les données que tu veux afficher dans ton fichier CSV, puis tu rajoute la ligne "INTO OUTFILE 'adresse/de/ton/fichier.csv' entre le SELECT et le FROM.
Sans option, il utilise la syntaxe par défaut des fichiers CSV, mais tu peux utiliser quelques options : cf documentation (Recherche la chaine "INTO OUTFILE")

Exemple d'utilisation :

Code : Tout sélectionner

SELECT champ1, champ2 INTO OUTFILE "/home/data/export_table1.csv' FROM table1
fichier export_table1.csv

Code : Tout sélectionner

val11 val21 val21 val22 val31 val32

par Ryle » 28 août 2007, 10:14

phpMyAdmin fait ça très bien il me semble :)

sinon tu peux utiliser la fonction fputcsv() pour créer assez facilement un fichier de type csv

créer un fichier csv à partir de données mysql

par sam01 » 28 août 2007, 09:46

Bonjour,

j'aimerais récuprer les données d'un table d'une base mysql et les mettre dans un fichier csv.
Et j'aimerais que ce fichier csv soir enregistré sur mon serveur.

Merci d'avance pour votre aide.