Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Bureautique
Bureautique Forum d'entraide sur la gestion dynamique de documents de bureautique (Word, Excel, OpenOffice...) avec PHP. Avant de poster -> Cours Excel, FAQ OpenXML, FAQ OpenDocument
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 25/06/2007, 12h21   #1
Membre actif
 
Avatar de JmL40
 
Inscription : mai 2007
Messages : 310
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2007
Messages : 310
Points : 191
Points : 191
Envoyer un message via MSN à JmL40
Par défaut Probleme REQUIRE ou INCLUDE (phpwriteexcel)

Bonjour,

Je suis confronté à un problème "bête" certe mais un problème.

J'utilise actuellement la classe phpwriteexcel permettant d'inclure des fichiers excel dans une page web.
Les données que je souhaite inclure sont issues d'une BD MySQL donc par requetes.

Je dispose donc de trois fichiers :

- Un fichier comprenant les identifiants de connection à la BD > Connect.php

- Un fichier me permettant d'effectuer une analyse croisée et d'extraire les données à afficher dans excel

- Un autre fichier exportant vers excel

Il faut donc associer les deux premiers fichiers au troisieme par include ou require.

Mon problème est le suivant : quand j'effectue l'inclusion de connect.php et analysecroisee.php l'exportation ne se fait pas et quand je met le code de analysecroisse.php dans exporation.php pas de pb !

Alors je ne comprend pas !

Avant de vous donner le code qui est assez important je préfère receuillir des informations.

Pour ce cas très très ...

Cordialement
JmL40 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2007, 13h01   #2
Membre du Club
 
Inscription : mars 2003
Messages : 50
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 50
Points : 49
Points : 49
Salut, soyons bien d'accord que quand tu inclus un fichier, le code du fichier à inclure est "copié" dans le fichier courant.
Donc il faut faire attention si les fichiers à inclure contiennent du code directement executable (par opposition a du code contenu des dans fonctions). En effet si tu inclus un fichier contenant du code php "directement executable" alors que ce morceau de code nécessite un autre morceau qui lui ne sera inclus qu'après.
Bref, je sais que c'est pas clair ce que je dit, mais vérifie les dépendances entres tes fichier (constantes, variables, ...) et l'ordre dans lequel tu les inclus.
Pysk0B0b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2007, 13h41   #3
Membre actif
 
Avatar de JmL40
 
Inscription : mai 2007
Messages : 310
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2007
Messages : 310
Points : 191
Points : 191
Envoyer un message via MSN à JmL40
MERCI de ta réponse !

En fait le code contenu dans analyse croisée est entièrement executé avant l'excution de l'exportation.

Je créer dans le premier une table dont je vais sélectionné les données dans le deuxième, je met les sources :

Fichier AnalyseCroisee.php
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
61
62
63
64
65
66
67
 
<?php
 
//INCLUSION DU FICHIER DE CONNECTION A LA BASE DE DONNEES
require("../../../connect.php");
 
$tabtemp = 'CREATE TABLE LigActiveTemp
				(NomLignee char(25), 
				ObtenteurLig varchar(50), 
				CoObtenteurLig varchar(50),
				MainteneurLig varchar(50), 
				OrigGenetiqueLig char(255), 
				FamOrigineLig varchar(5), 
				PriveeLig varchar(5), 
				CommentaireLig char(255), 
				HSGLig tinyint(1), 
				CatalogueLig tinyint(1), 
				NomExtLig varchar(50), 
				NomminationLig int(4), 
				BreederLig varchar(50), 
				UCFLig int(4), 
				UCMLig int(4), 
				RecurrentLig varchar(50), 
				DenomOffLig char(255), 
				TypeLignee varchar(50),
				PRIMARY KEY  (NomLignee),
				KEY NomLignee (NomLignee))';
 
$temp = mysql_query($tabtemp,$link) or die ('Erreur : '.mysql_error() );
 
$station = 'SELECT DISTINCT station from TbXLigStationUtilisation order by station';
$stat = mysql_query($station,$link) or die ('Erreur : '.mysql_error() );
 
while($rowstation = mysql_fetch_array($stat)){	
 
		$colstat = ' ALTER TABLE LigActiveTemp ADD COLUMN `'.$rowstation["station"].'` VARCHAR( 30 )';		
		$addcolstat = mysql_query($colstat,$link) or die ('Erreur : '.mysql_error() );
 
		$ligact = ' INSERT INTO LigActiveTemp (NomLignee, ObtenteurLig, CoObtenteurLig, MainteneurLig, OrigGenetiqueLig, FamOrigineLig, PriveeLig, CommentaireLig, HSGLig, CatalogueLig,
		NomExtLig, NomminationLig, BreederLig, UCFLig, UCMLig, RecurrentLig, DenomOffLig, TypeLignee,'.$rowstation["station"].')
		SELECT TbXLigStationUtilisation.NomLignee, TbLigIdentite.ObtenteurLig, 
		TbLigIdentite.CoObtenteurLig, TbLigIdentite.MainteneurLig, TbLigIdentite.OrigGenetiqueLig, 
		TbLigIdentite.FamOrigineLig, TbLigIdentite.PriveeLig, TbLigIdentite.CommentaireLig, TbLigIdentite.HSGLig, 
		TbLigIdentite.CatalogueLig, TbLigIdentite.NomExtLig, TbLigIdentite.NomminationLig, TbLigIdentite.BreederLig, 
		TbLigIdentite.UCFLig, TbLigIdentite.UCMLig, TbLigIdentite.RecurrentLig, TbLigIdentite.DenomOffLig, 
		TbXLigStationUtilisation.TypeLignee,
		sum(case when Station="'.$rowstation["station"].'" then if(TypeLignee="ACTIVE","A","") else 0 end) as "'.$rowstation["station"].'"
		FROM TbLigIdentite AS TbLigIdentite 
		RIGHT JOIN TbXLigStationUtilisation ON TbLigIdentite.NomLignee = TbXLigStationUtilisation.NomLignee
		WHERE (((TbXLigStationUtilisation.TypeLignee)="ACTIVE") 
		AND ((TbXLigStationUtilisation.Station)="ARLES" 
		Or (TbXLigStationUtilisation.Station)="RHODON" 
		Or (TbXLigStationUtilisation.Station)="NECKARMUHLBACH" 
		Or (TbXLigStationUtilisation.Station)="HAUTMAUCO" 
		Or (TbXLigStationUtilisation.Station)="CONVERSION"))
		GROUP BY TbXLigStationUtilisation.NomLignee, TbLigIdentite.ObtenteurLig, TbLigIdentite.CoObtenteurLig, 
		TbLigIdentite.MainteneurLig, TbLigIdentite.OrigGenetiqueLig, TbLigIdentite.FamOrigineLig, 
		TbLigIdentite.PriveeLig, TbLigIdentite.CommentaireLig, TbLigIdentite.HSGLig, TbLigIdentite.CatalogueLig, 
		TbLigIdentite.NomExtLig, TbLigIdentite.NomminationLig, TbLigIdentite.BreederLig, TbLigIdentite.UCFLig, 
		TbLigIdentite.UCMLig, TbLigIdentite.RecurrentLig, TbLigIdentite.DenomOffLig, 
		TbXLigStationUtilisation.TypeLignee
		ORDER BY TbXLigStationUtilisation.NomLignee';
 
		$resligac = mysql_query($ligact,$link) or die ('Erreur : '.mysql_error() );
 
}
?>
Fichier Exportation.php

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
 
<?php
 
//FICHIER D'EXPORTATION DES DONNEES DU CATALOGUE LIGNEES VERS EXCEL
 
//INCLUSION DU FICHIER DE CONNECTION A LA BASE DE DONNEES
require("../../../connect.php");
 
//ANALYSE CROISEE	
$tabtemp = 'CREATE TABLE LigActiveTemp
				(NomLignee char(25), 
				ObtenteurLig varchar(50), 
				CoObtenteurLig varchar(50),
				MainteneurLig varchar(50), 
				OrigGenetiqueLig char(255), 
				FamOrigineLig varchar(5), 
				PriveeLig varchar(5), 
				CommentaireLig char(255), 
				HSGLig tinyint(1), 
				CatalogueLig tinyint(1), 
				NomExtLig varchar(50), 
				NomminationLig int(4), 
				BreederLig varchar(50), 
				UCFLig int(4), 
				UCMLig int(4), 
				RecurrentLig varchar(50), 
				DenomOffLig char(255), 
				TypeLignee varchar(50),
				PRIMARY KEY  (NomLignee),
				KEY NomLignee (NomLignee))';
 
$temp = mysql_query($tabtemp,$link) or die ('Erreur : '.mysql_error() );
 
$station = 'SELECT DISTINCT station from TbXLigStationUtilisation order by station';
$stat = mysql_query($station,$link) or die ('Erreur : '.mysql_error() );
 
while($rowstation = mysql_fetch_array($stat)){	
 
		$colstat = ' ALTER TABLE LigActiveTemp ADD COLUMN `'.$rowstation["station"].'` VARCHAR( 30 )';		
		$addcolstat = mysql_query($colstat,$link) or die ('Erreur : '.mysql_error() );
 
		$ligact = ' INSERT INTO LigActiveTemp (NomLignee, ObtenteurLig, CoObtenteurLig, MainteneurLig, OrigGenetiqueLig, FamOrigineLig, PriveeLig, CommentaireLig, HSGLig, CatalogueLig,
		NomExtLig, NomminationLig, BreederLig, UCFLig, UCMLig, RecurrentLig, DenomOffLig, TypeLignee,'.$rowstation["station"].')
		SELECT TbXLigStationUtilisation.NomLignee, TbLigIdentite.ObtenteurLig, 
		TbLigIdentite.CoObtenteurLig, TbLigIdentite.MainteneurLig, TbLigIdentite.OrigGenetiqueLig, 
		TbLigIdentite.FamOrigineLig, TbLigIdentite.PriveeLig, TbLigIdentite.CommentaireLig, TbLigIdentite.HSGLig, 
		TbLigIdentite.CatalogueLig, TbLigIdentite.NomExtLig, TbLigIdentite.NomminationLig, TbLigIdentite.BreederLig, 
		TbLigIdentite.UCFLig, TbLigIdentite.UCMLig, TbLigIdentite.RecurrentLig, TbLigIdentite.DenomOffLig, 
		TbXLigStationUtilisation.TypeLignee,
		sum(case when Station="'.$rowstation["station"].'" then if(TypeLignee="ACTIVE","A","") else 0 end) as "'.$rowstation["station"].'"
		FROM TbLigIdentite AS TbLigIdentite 
		RIGHT JOIN TbXLigStationUtilisation ON TbLigIdentite.NomLignee = TbXLigStationUtilisation.NomLignee
		WHERE (((TbXLigStationUtilisation.TypeLignee)="ACTIVE") 
		AND ((TbXLigStationUtilisation.Station)="ARLES" 
		Or (TbXLigStationUtilisation.Station)="RHODON" 
		Or (TbXLigStationUtilisation.Station)="NECKARMUHLBACH" 
		Or (TbXLigStationUtilisation.Station)="HAUTMAUCO" 
		Or (TbXLigStationUtilisation.Station)="CONVERSION"))
		GROUP BY TbXLigStationUtilisation.NomLignee, TbLigIdentite.ObtenteurLig, TbLigIdentite.CoObtenteurLig, 
		TbLigIdentite.MainteneurLig, TbLigIdentite.OrigGenetiqueLig, TbLigIdentite.FamOrigineLig, 
		TbLigIdentite.PriveeLig, TbLigIdentite.CommentaireLig, TbLigIdentite.HSGLig, TbLigIdentite.CatalogueLig, 
		TbLigIdentite.NomExtLig, TbLigIdentite.NomminationLig, TbLigIdentite.BreederLig, TbLigIdentite.UCFLig, 
		TbLigIdentite.UCMLig, TbLigIdentite.RecurrentLig, TbLigIdentite.DenomOffLig, 
		TbXLigStationUtilisation.TypeLignee
		ORDER BY TbXLigStationUtilisation.NomLignee';
 
		$resligac = mysql_query($ligact,$link) or die ('Erreur : '.mysql_error() );
 
}
 
//DECLARATION DU TABLEAU CONTENANT L'ENSEMBLE DES CHAMPS DE LA REQUETE
$champs = array("NomLignee","ObtenteurLig","CoObtenteurLig","MainteneurLig","OrigGenetiqueLig","FamOrigineLig","PriveeLig","CommentaireLig","HSGLig","CatalogueLig",
"NomExtLig","NomminationLig","BreederLig","UCFLig","UCMLig","RecurrentLig","DenomOffLig","TypeLignee");
 
//ON AJOUTE AU TABLEAU PRECEDENT TOUS LES NOMS DE STATIONS PRESENT EN BD
$station = 'SELECT DISTINCT station from TbXLigStationUtilisation order by station';
$stat = mysql_query($station,$link) or die ('Erreur : '.mysql_error() );
$j = 18;
while($row = mysql_fetch_array($stat)){			
	  $champs[$j] = $rowstation["station"];
	  $i++;		
}
 
//RECUPERATION DE LA TAILLE DE CE TABLEAU
$taille = count($champs);
 
//REQUETE DE SELECTION DES DONNEES A AFFICHEES
$select = 'SELECT * From LigActiveTemp';
 
//CONNECTION A LA BASE DE DONNEES
	$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
	$total = mysql_num_rows($result);
 
//INCLUSION DE LA CLASSE PHPWRITEEXCEL	
	require_once "../../../Classes/class.writeexcel_workbook.inc.php";
	require_once "../../../Classes/class.writeexcel_worksheet.inc.php";
 
//CREATION DU FICHIER TEMPORAIRE EXCEL + INSTANCIATION D'UN NOUVEL OBJET DE LA CLASSE PHPWRITEEXCEL
	$fname = tempnam("/tmp", "simple.xls");
	$workbook = &new writeexcel_workbook($fname);
	$worksheet = &$workbook->addworksheet();
 
//ECRITURE SUR LE FICHIER EXCEL GRACE A LA METHODE WRITE DE PHPWRITEEXCEL	
 
	//ECRITURE DE LA PREMIERE LIGNE (IDENTIFIANT DE CHAQUES CHAMPS)
	for($j=0;$j<=($taille-1);$j++){
		$worksheet->write(1,$j,$champs[$j]);
	}
 
	//ECRITURE DES DONNEES EN FONCTION DES CHAMPS OU COLONNES
	$i=2;
    while($row = mysql_fetch_array($result)) {
        for($j=0;$j<=($taille-1);$j++){
				$worksheet->write($i,$j,$row["$champs[$j]"]);
		}
	$i++;	
    }
 
//FERMETURE DU CLASSEUR TEMPORAIRE EXCEL
	$workbook->close();
 
//INTEGRATION DU WORKBOOK EXCEL DANS LA PAGE WEB GRACE A LA FONCTION HEADER DE PHP
	header("Content-Type: application/x-msexcel; name=\"example-simple.xls\"");
	header("Content-Disposition: inline; filename=\"example-simple.xls\"");
 
//OUVERTURE DU FICHIER EXCEL
	$fh=fopen($fname, "rb");
	fpassthru($fh);
 
//DESTRUCTION DE CE FICHIER
	unlink($fname);
 
//ON DROP ICI LA TABLE TEMPORAIRE CREE DANS LE FICHIER D'ANALYSE CROISEE
$drop = 'DROP TABLE LigActiveTemp';
$drope = mysql_query($drop,$link) or die ('Erreur : '.mysql_error() );
?>
J'essaye donc d'inclure analysecroisée.php dans exportation.php en même temps que le fichier de connection à la BD connect.php.

Dans ce cas la, l'exportation n'as pas lieu a cause de ces includes.

Je continue à chercher de mon coté, j'attends vos réponses merci !
JmL40 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2007, 13h57   #4
Membre du Club
 
Inscription : mars 2003
Messages : 50
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 50
Points : 49
Points : 49
As tu essayé en enlevant le require connect.php du fichier analysecroisee.php, vu que de toute façon le fichier auras précédemment été inclus dans exportation.
Si tu ne trouve toujours pas, postes-nous le contenu de connect.php (sans les identifiants bien sur).
Est tu sur de n'avoir aucun message d'erreur, peut-être dans le source du fichier excel résultant.
Pysk0B0b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2007, 14h08   #5
Membre actif
 
Avatar de JmL40
 
Inscription : mai 2007
Messages : 310
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2007
Messages : 310
Points : 191
Points : 191
Envoyer un message via MSN à JmL40
J'ai essayé de mettre les identifiants de connection et cela revient au même impossible d'exporter.

Mon fichier connect.php fonctionne puisque je l'utilise pour d'autres scripts, donc à mon avis cela ne vient pas de ca.

Lors de mon exportation, et lorsque j'essaye d'inclure les deux fichiers, il me genère pas une erreur mais une mauvaise interprétation avec des carrés, des codes illisibles.

De plus, il n'arrive pas à exécuter la commande UNLIK à la fin du script.

Voila ce que je peut dire !
JmL40 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 12h27.


 
 
 
 
Partenaires

Hébergement Web