Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/05/2011, 08h53   #1
Invité de passage
 
Homme
Étudiant
Inscription : 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
Points : 0
Points : 0
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 :
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.
Waka56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2011, 17h10   #2
Membre du Club
 
Homme
Développeur Web
Inscription : 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
Points : 55
Points : 55
Bonjour,

Peux tu nous montrer ce que fait ton fichier test.php ?
westdigit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2011, 17h23   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
pour créer du CSV c'est fputcsv
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 08h10   #4
Invité de passage
 
Homme
Étudiant
Inscription : 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
Points : 0
Points : 0
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 :
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.
Waka56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 11h02   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
tu comprends le while ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 13h35   #6
Invité de passage
 
Homme
Étudiant
Inscription : 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
Points : 0
Points : 0
... Tu me demande si je comprends le fonctionnement de la fonction while ou si je comprends celui que j'utilise ?!?
Waka56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 13h37   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 13h55   #8
Invité de passage
 
Homme
Étudiant
Inscription : 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
Points : 0
Points : 0
Bien entendu. Pourquoi ???

(enfin, le mien, couci couça... (c'est un script tout fait)).
Waka56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 13h59   #9
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
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 :
Citation:
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 14h08   #10
Membre à l'essai
 
Homme
Inscription : janvier 2009
Messages : 36
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : janvier 2009
Messages : 36
Points : 21
Points : 21
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 :

Citation:
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
kayoum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 17h28   #11
Invité de passage
 
Homme
Étudiant
Inscription : 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
Points : 0
Points : 0
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
Waka56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 17h38   #12
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 18h31   #13
Invité de passage
 
Homme
Étudiant
Inscription : 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
Points : 0
Points : 0
Bon, dans ce cas, je vais rester avec ma technique. Merci quand même
Waka56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h32.


 
 
 
 
Partenaires

Hébergement Web