A voir également:
- Requête sql export csv
- Export favoris chrome - Guide
- Roissy piac export ✓ - Forum Consommation & Internet
- Requête sql date supérieure à ✓ - Forum Programmation
- Colis bloqué à Roissy ✓ - Forum Consommation & Internet
- Sql lister les tables ✓ - Forum Programmation
7 réponses
Salut, moi j'avais trouvé un code très simple. Si ça peut aider je le met :
Voila, on créé une variable "$xls_output" à laquelle on commence par attribuer les premiers champs du tableau (les titre des colonnes quoi), puis on créé la requête et on l'exécute. Dans le "while" on parcoure cette requête et on complète pour chaque enregistrement la variable "$xls_output". Et à chaque fois que l'ont complete cette variable, on met des ";" entre chaque valeurs et on termine la ligne par un "\n".
Ceci va permettre de détecter les champs car ils serons situés entre les ";", mais aussi de détecter quand une lignes sera terminée grâce à l'"\n".
Enfin, grâce au "header", on exporte le tout dans un fichier qui s'appellera "export_la_date_du_jour.csv".
Pour ça fonctionne, il faut bien sur faire gaffe de ne pas trouver de ";" ou d'"\n" dans les valeurs que tu rentres...
Pour ça j'ai créé une fonction, et je l'appelle pour tous les enregistrements que je rentre dans mon fichier :
Il doit déjà en avoir des toutes faite mais bon...
<?php include('../conn_deconn/session.php'); include '../bdd/connexion_bdd.php'; //Premiere ligne ; nom des champs : $xls_output = "MATRICULE;NOM;PRENOM"; $xls_output .= "\n"; //Requete SQL $query='SELECT matricule, nom, prenom FROM une_table'; $result = mysql_query($query) or die(mysql_error()); //Boucle sur les resultats while($row = mysql_fetch_array($result)) { $xls_output .= $row[0] . ";" . $row[1] . ";" . $row[2]; $xls_output .= "\n"; } header("Content-type: application/vnd.ms-excel"); header("Content-disposition: attachment; filename=export_" . date("d-m-Y").".csv"); print $xls_output; exit; ?>
Voila, on créé une variable "$xls_output" à laquelle on commence par attribuer les premiers champs du tableau (les titre des colonnes quoi), puis on créé la requête et on l'exécute. Dans le "while" on parcoure cette requête et on complète pour chaque enregistrement la variable "$xls_output". Et à chaque fois que l'ont complete cette variable, on met des ";" entre chaque valeurs et on termine la ligne par un "\n".
Ceci va permettre de détecter les champs car ils serons situés entre les ";", mais aussi de détecter quand une lignes sera terminée grâce à l'"\n".
Enfin, grâce au "header", on exporte le tout dans un fichier qui s'appellera "export_la_date_du_jour.csv".
Pour ça fonctionne, il faut bien sur faire gaffe de ne pas trouver de ";" ou d'"\n" dans les valeurs que tu rentres...
Pour ça j'ai créé une fonction, et je l'appelle pour tous les enregistrements que je rentre dans mon fichier :
function lisserChaineCarac($chaineCarac) { $chaineCarac = str_replace(';',',',$chaineCarac); $chaineCarac = str_replace(CHR(13),' ',$chaineCarac); $chaineCarac = str_replace(CHR(10),' ',$chaineCarac); return $chaineCarac; }
Il doit déjà en avoir des toutes faite mais bon...
J'ai l'impression que tu as un soucis sur ton parcours et sur ton insertion. De plus, tu devrais utiliser des "," pour changer de colonne et non des "\t"
voici un exemple de ce que tu peux faire (dans mon cas j'ai utilisé le framework Zend) :
voici un exemple de ce que tu peux faire (dans mon cas j'ai utilisé le framework Zend) :
$file = fopen("[path]/nomFichier.csv", "w"); if (!$file) { echo "<p>Impossible d'ouvrir un fichier distant en écriture.\n"; exit; } $stmt = $db->query($sql); $result = $stmt->fetchAll(); $db->closeConnection(); $elems = count($result); $i = 0; while ($i < $elems) { $row = $result[$i]; foreach ($row as $e) { //$str est équivalent à "$e," //on récupère l'élément $e puis on place une "," derriere. // les \" insérés servent à échapper les \n qu'il porrait y avoir dans un champ texte de la table par exemple $str = "\"$e\","; fwrite ($file, $str); } fwrite ($file, "\n"); $i++; } fclose($file); }
DAG1
Messages postés
6
Date d'inscription
mardi 21 octobre 2008
Statut
Membre
Dernière intervention
28 décembre 2009
1
21 oct. 2008 à 16:13
21 oct. 2008 à 16:13
Si je pense, mais pour le lire avec Excel ça va être galère je crois...
lolol j'ai testé quand même par curiosité, je pensais qu'il n'allait pas enlever les backslashs en insérant le texte ... en fait il fait pire, il enlève le " ; " et laisse le backslash =o))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
simono44
Messages postés
1
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
8 avril 2008
8 avril 2008 à 10:55
8 avril 2008 à 10:55
personne pour ce ptit problème ? j'arrive vraiment pas à trouver ...