Donnée de ma base sql en fichier csv

Fermé
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 - 19 mai 2009 à 11:06
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 - 20 mai 2009 à 09:42
Bonjour,

voilà j'ai un problème sur mon passage des donées de ma bases dans un fichier csv j'ai récupérer ce code et je l'ai reformuler pour qu'il marche mais ce n'est pas le cas, il n'y a rien dans mon affichage et je récupère pas de fichier table.csv
de plus dans ma fonction je fais une séparation pour que ce soient des tabs qui séparent et pas des ; ou autres

<?php

// ----------------------------------------------------------------------
// Liste les données de la table dans un fichier CSV
// Paramètres: une requete qui marche avec seulement les champs souhaités
// separateur des champs (optionnel) par défaut ";"
// ----------------------------------------------------------------------
function ExportCsv($Query, $separateur="&nbsp;") {
ini_set ("max_execution_time ", "45") ;
if (!$Query) {
echo "<br/>Requete vide !!!<br/>";
return false;
}

$resQuery = pg_query($Query);
if (!$resQuery) {
echo "<br/>Erreur dans cette requete !!!<br/>";
return false;
}

header("Content-Type: application/csv-tab-delimited-table");
header("Content-disposition: filename=table.csv");



if (pg_num_rows($resQuery) != 0) {
// titre des colonnes
$fields = pg_num_fields($resQuery);
$i = 0;
while ($i < $fields) {
echo pg_field_name($resQuery, $i)." ".$separateur;
$i++;
}
echo "\n";

// données de la table
while ($arrSelect = pg_fetch_array($resQuery)) {
/*foreach($arrSelect as $elem) {
echo "$elem"." ".$separateur;
}*///fin foreach
$i=0;
while ($i < $fields) {
echo $arrSelect[$i]." ".$separateur;
$i++;
}
echo "\n";
}//fin while
}//fin if

return true;
}//fin de la jolie fonction
?>



<?php
// Liste les données de la table
// -------------------------------------------
$Query = mysql_query("SELECT * FROM en_customers");
?>
<?php  ExportCsv($Query, $separateur); ?>


voilà plusieur heur que je suis sur ce problème sans en voir l'issue si quelqu'un pourrait m'éclairer je serait heureu merci

PS: est-il possible de faire un affichage tablea???
A voir également:

20 réponses

Bonjour

Je ne vois pas où tu as mis de TAB : ta variable $separateur n'est pas initialisée.
modifie :
<?php ExportCsv($Query, "\t"); ?>

Et tu ne fais pas du vrai csv avec ce script (tu ne protèges pas les tab et les CR - LF dans tes données) mais ça a des chances de marcher quand même si tes données n'ont aucun piège
Ce serait sûrement bien plus simple et plus fiable d'utiliser les fonction csv toutes faites de PHP.
0
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 11
19 mai 2009 à 11:36
Bonjours et merci de ta réponse

Ce serait sûrement bien plus simple et plus fiable d'utiliser les fonction csv toutes faites de PHP.


ce sont lesquels les fonctions a utilisé??

d'ailleur je cherche a mettre mes données comme si c'estais un taleau et je vois pas comment fair si ta un tuto le montran ce serai cool
0
La principale fonction à utiliser est fputcsv:
https://www.php.net/manual/fr/function.fputcsv.php
Si tu ne te sens pas à l'aise avec, oublie et contente-toi de la modif du "\t"
Pour le tuto, je n'ai pas d'adresse toute faite mais "le site du zéro" a bonne réputation, tu trouveras sûrement ton bonheur
0
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 11
19 mai 2009 à 11:50
malheureusement j'ai déjà regardé mais rien trouvé pour ce style d'affichage si tu pouvais me mettre sur une piste ce serai gentille

mais le problème reste le même vue qu'il n'y a rien qui s'affiche??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 11
19 mai 2009 à 12:39
voilà j'ai bien modifier le scripte car celui que j'utilisais avent ne marchais pas
pour ce qui est du tableau c'est un peu près bon sauf que l'affichage des données de la tables sont en verticale mais après j'espère que j'ariverai a bien les mettre dessou les bon nom de mes tables

<?php
// Liste les données de la table
// -------------------------------------------
$resQuery = mysql_query("SELECT * FROM en_customers WHERE  customers_id='1235' ");
ini_set ("max_execution_time ", "15") ;
header("Content-Type: application/csv-tab-delimited-table");
header("Content-disposition: filename=table.csv");

if (mysql_num_rows($resQuery) != 0) {
  // titre des colonnes
  $fields = mysql_num_fields($resQuery);
  $i = 0;
  while ($i < $fields) {
?>	  
	  <table border="1"> 
		<tr style="text-align: center; background-color:#FFAD5B; font-weight:bold;">
			<th><?php echo mysql_field_name($resQuery, $i)."\t";?>  </th></tr>
<?php	  
    
    $i++;
	
  }
  echo "\n";

  // données de la table
  while ($arrSelect = mysql_fetch_array($resQuery, MYSQL_ASSOC)) {
   foreach($arrSelect as $elem) {
?>
<td style="text-align:center;"> <?php echo "$elem;"; ?> </td>	   
 <?php
 
   }
   echo "\n";
  }
}
?>
0
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 11
19 mai 2009 à 14:32
Bonjours,

j'ai réussit à réglé mon problème d'affichage par contre je trouve pas mon fichier csv qui devrait être créer ai-je commis une erreur??


<?php
// Liste les données de la table
// -------------------------------------------
$resQuery = mysql_query("SELECT  * FROM en_customers WHERE  customers_id='1235'");

header("Content-Type: application/csv-tab-delimited-table");
header("Content-disposition: filename=table.csv");

if (mysql_num_rows($resQuery) != 0) {
  // titre des colonnes
  $fields = mysql_num_fields($resQuery);
  $i = 0;
  while ($i < $fields) {
    echo mysql_field_name($resQuery, $i).";";
    $i++;
  }
  echo "\n";

  // données de la table
  while ($arrSelect = mysql_fetch_array($resQuery, MYSQL_ASSOC)) {
   foreach($arrSelect as $elem) {
    echo "$elem;";
   }
   echo "\n";
  }
}
?>


doi-je rajouter quelques chose?? car je trouve pas mon fichier csv
0
Ton script n'a jamais créé aucun fichier. Il se contente d'afficher. Où y a-t-il une création de fichier dans ton script ? ou une écriture dans un fichier ?
0
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 11
19 mai 2009 à 14:55
le

header("Content-Type: application/csv-tab-delimited-table");
header("Content-disposition: filename=table.csv");

ne s'occupe pas de créer le fichier??
0
Mille-z-excuses, tu as tout à fait raison. Je pensais à une création de fichier côté serveur.
En fait, c'est toi qui décides quand tu le reçois si tu l'affiches ou si tu l'enregistres dans un fichier. Avec FF, tu as une fenêtre qui te propose le choix, tu n'as qu'à choisir de l'enregistrer.
0
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 11
19 mai 2009 à 15:42
le problème c'est que j'ai rien qui s'affiche pour me proposer de l'enregistré et c'est ce que je cherche
0
J'ai essayé ton script chez moi et ça m'a bien posé la question... Mais tu as peut-être coché un jour la case "toujours effectuer cette opération pour ce type de fichier". Alors ça ne te pose plus la question.
Ça fait quoi ? ça ouvre excel ?
0
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 11
19 mai 2009 à 16:00
sa m'affiche juste sur ma page firefox avec les données mais j'ai rien??? d'autre
0
Dans FireFox, outils, options, onglet applications. Dans la colonne de gauche , recherche la ligne correspondant aux fichiers csv et regarde l'action correspondante dans la colonne de droite.
0
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 11
19 mai 2009 à 16:11
j'ai rien a partire de là: Dans la colonne de gauche , recherche la ligne correspondant aux fichiers csv et regarde l'action correspondante dans la colonne de droite.
0
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 11
19 mai 2009 à 16:15
normalement je peu pas le mettre directement sur mon serveur le fichier csv?? car là même sur explorer sa me propose rien?? et je l'ai jamais utilisé???
0
Si tu peux le mettre directement sur le serveur, mais ce script-là sert à l'envoyer au client. C'est pour ça qu'à un moment donné je t'ai dit que ton script ne générait pas de fichier, je ne pensais qu'au serveur.
Le script pour enregistrer dans le serveur n'est pas très différent, il suffit d'écrire dans un fichier tout ce que tu envoies ici par echo. Sans header(.
Mais ça m'étonne que ça ne marche pas comme ça.
Quand tu crées un fichier avec l'extension csv et que tu le regardes dans l'explorateur de windows (pas IE !) , que vois-tu dans la colonne 'type' ?
0
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 11
19 mai 2009 à 16:50
excuse moi mais j'ai pas bien compris la dernière question de: que vois-tu dans la colonne 'type'
j'ai pas trouvé :( ou alors j'ai cherché a cotés
0
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 11
19 mai 2009 à 17:03
es-ce que c'est pas ma version de php qui le prend pas en compte
0
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 11
19 mai 2009 à 17:23
voilà le bon code c'estais une erreur avec les <?php

tous marche merci de ton aide bonne soiré
0
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 11
20 mai 2009 à 09:42
Hello

sa marche bien mais mon problème c'est qu'il y a trop de donnée donc je voulais savoir si il étais possible de le mettre dans un fichier zip??
0