Export Base de Donnée en fichier Excel via PHP
Bonjour à tous,
Je sais que la question a été posée un nombre incommensurable de fois, mais j'ai testé tous les scripts proposés sans qu'aucun ne marche.
Je doit donc faire un site internet où les anciens élèves d'un établissement vont entrer des renseignements dans un formulaire qui seront stockés dans une base de données. Jusqu'ici, pas de problème.
Ensuite, il faut exporter les données dans un fichier lisible par excel ( .csv pourquoi pas...), et c'est là que je bloque.
Le seul code que j'ai trouvé qui marche à peu près est celui là :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| conf_int.php:
# codes administration de BDD
$DBHost="localhost";
$DBUser="xxxxxxx";
$DBPass="yyyyyyyyy";
$DBName="ASSOC";
export_excel.php:
<?php
// à elle seule, la ligne suivante suffit à envoyer le résultat du script dans une feuille Excel
header("Content-type: application/vnd.ms-excel");
// la ligne suivante est facultative, elle sert à donner un nom au fichier Excel
header("Content-Disposition: attachment; filename=E:\repertoire_destination\nom_fichier.xls");
require_once("conf_int.php");
// La suite est une simple requête php-mysql. On interroge la table utilisée dans l'exemple précédent.
$bdd = mysql_connect($DBHost,$DBUser,$DBPass);
mysql_select_db((DB),$bdd);
// notez la présence du caractère arobase (@) , en cas d'erreur,
// il empêche PHP d'écrire un message d'erreur sur le navigateur
$requete=@mysql_query("SELECT prenom,nom,email FROM ".(TAB)." ORDER BY nom,prenom");
// on vérifie le contenu de la requête ;
if (@mysql_numrows($requete) ==0)
{ // si elle est vide, on en informe l'utilisateur à l'aide d'un Javascript
print "<script> alert('La requête n\'a pas abouti !')</script>";
}
// construction du tableau HTML
print '<table border=1>
<!-- impression des titres de colonnes -->
<TR><TD>Prenom</TD><TD>Nom</TD><TD>email</TD></TR><TR>';
// lecture du contenu de la requête avec 2 boucles imbriquées; par ligne et par colonne
for ($ligne=0 ; $ligne<@mysql_numrows($requete);$ligne++)
{
for ($colonne = 0;$colonne < 3 ; $colonne++)
{
print '<TD>' .mysql_result($requete , $ligne,$colonne). '</TD>';
}
print '</TR>';
}
print '</TABLE>';
mysql_close();
// on informe l'utilisateur de la réussite
if (@mysql_numrows($requete) >0)
{
print "<script> alert('La table est bien mise à jour !')</script>";
}
?> |
, que j'ai un peu, disons ... "simplifié"...
Code:
1 2 3 4 5
| <?php
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=export.xls");
require_once("test.php"); // Il crée un tableau en HTML qui contient les données de la base.
?> |
Je sais que c'est un peu barbare. D'autant que lorsque je lance le fichier créé, il me met un message "d'erreur".
J'aimerais donc, si possible, via une requête, créer un fichier Excel.
PS : Le premier script fonctionne peut-être, je ne le comprend juste pas et ne sais pas trop quoi modifier...
Merci d'avance pour votre aide.