IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Export Base de Donnée en fichier Excel via PHP


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 12
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 36
    Par défaut
    Bonjour,

    Peux tu nous montrer ce que fait ton fichier test.php ?

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    pour créer du CSV c'est fputcsv

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 12
    Par défaut
    Le fichier test.php, affiche juste un tableau qui est repris par Excel (je l'ai mis en commentaire). J'imagine qu'avec ce que je fais, il m'enregistre juste ma page en .xls...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    	<head>
    		<title>Exemple d'utilisation de CSS externe</title>
    		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    		<link rel="stylesheet" media="screen" type="text/css" title="Design" href="Tableau.css" />
    	</head>
    	<body>
    		<?php
    		try
    			{
    			$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    			$bdd = new PDO('mysql:host=localhost;dbname=Test_Clem', 'root', '', $pdo_options);
     
    			// On récupère tout le contenu de la table
    			$reponse = $bdd->query('SELECT * FROM Formulaire');
     
    			// On affiche chaque entrée une à une
    			?>
    			<p>
    			<table>
    				<tr>
    					<th>Nom</th>
    					<th>Prenom</th>
    					<th>Sexe</th>
    					<th>Adresse</th>
    					<th>Code Postal</th>
    					<th>Ville</th>
    					<th>Classe</th>
    					<th>Mail</th>
    				</tr>
     
    				<?php
    				while ($donnees = $reponse->fetch())
    					{
    					?>
    					<tr>
    						<td><?php echo $donnees['Nom']; ?></td>
    						<td><?php echo $donnees['Prenom']; ?></td>
    						<td><?php echo $donnees['Sexe']; ?></td>
    						<td><?php echo $donnees['Adresse']; ?></td>
    						<td><?php echo $donnees['Code_Post']; ?></td>
    						<td><?php echo $donnees['Ville']; ?></td>
    						<td><?php echo $donnees['Classe']; ?></td>
    						<td><?php echo $donnees['Mail']; ?></td>
    					</tr>
    					</p>
    					<?php
    					}
     
    			$reponse->closeCursor(); // Termine le traitement de la requête
    			}
    		catch (Exception $e)
    		{
    		// En cas d'erreur précédemment, on affiche un message et on arrête tout
    		die('Erreur : ' . $e->getMessage());
    		}
    	?>
    	</body>
    </html>

    stealth35, je regarde ça.

    [EDIT] :
    Ça ne fonctionne pas. J'ai besoin d'utiliser un while et il n'a pas l'air d'en vouloir...
    Sans compter qu'en essayant avec l'exemple seul, il inscrit chaque ligne dans une seule et même case.

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    tu comprends le while ?

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 12
    Par défaut
    ... Tu me demande si je comprends le fonctionnement de la fonction while ou si je comprends celui que j'utilise ?!?

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Waka56 Voir le message
    ... Tu me demande si je comprends le fonctionnement de la fonction while ou si je comprends celui que j'utilise ?!?
    les deux

  8. #8
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 12
    Par défaut
    Bien entendu. Pourquoi ???

    (enfin, le mien, couci couça... (c'est un script tout fait)).

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Waka56 Voir le message
    Bien entendu. Pourquoi ???

    (enfin, le mien, couci couça... (c'est un script tout fait)).
    parce ta phrase n'as pas se sens par rapport au fputcsv :
    J'ai besoin d'utiliser un while et il n'a pas l'air d'en vouloir...
    si tu veux faire du CSV il faut virer tout le HTML

  10. #10
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2009
    Messages : 35
    Par défaut
    CSV signifie littéralement Comma Separated Values (valeurs séparées par des virgules) Donc le format CSV positionne des données de la façon suivante:

    Par exemple :

    Elève Matière Moyenne
    Toto,Anglais,12
    Riri,Anglais,15
    etc...
    par défaut le format est (si je ne m'abuse) un séparateur de colonne en virgule et un séparateur de ligne avec des retours chariots.

    Pour générer du csv, soit tu suis les conseils de stealth35 et tu regarde du coté de fputscsv(), sinon tu le génère toi même en respectant son format (donc pas de <table><tr><td>...)

    Cordialement

    Guillaume

  11. #11
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 12
    Par défaut
    J'entends bien mais vu que je ne saurais jamais combien j'ai d'entrée et que c'est de toute façon entreposé dans une base SQL, ce ne sera pas possible.

    En fait, ce que je voudrais plus c'est comprendre le script qui crée des .xls pour y mettre mes infos.
    Merci d'avance

  12. #12
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Waka56 Voir le message
    J'entends bien mais vu que je ne saurais jamais combien j'ai d'entrée et que c'est de toute façon entreposé dans une base SQL, ce ne sera pas possible.

    En fait, ce que je voudrais plus c'est comprendre le script qui crée des .xls pour y mettre mes infos.
    Merci d'avance
    créer des xls (binaire) c'est bien plus compliquer google utilise une lib C (LibXL)
    il existe une extension php basé sur cette lib : https://github.com/iliaal/php_excel

    sinon utilise PHP_Excel

  13. #13
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 12
    Par défaut
    Bon, dans ce cas, je vais rester avec ma technique. Merci quand même

Discussions similaires

  1. Exporter un rapport (grid) vers fichier excel via un lien
    Par mano_bi dans le forum Microstrategy
    Réponses: 2
    Dernier message: 27/05/2015, 16h12
  2. [Excel] Récupérer la base de donnée en fichier Excel
    Par abdelkarim_1987 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 23/06/2013, 20h02
  3. [Toutes versions] Importer données dans fichier Excel via macro VBA
    Par JEREMY01 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/07/2012, 23h13
  4. Extraire une base de données en fichier Excel
    Par julia_m dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 24/09/2010, 18h24
  5. Export de données Oracle vers Excel via PHP
    Par Yanos dans le forum Oracle
    Réponses: 1
    Dernier message: 11/01/2006, 18h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo