Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > PDF > FPDF
FPDF Forum d'entraide pour la bibliothèque FPDF permettant de générer des documents PDF en PHP. Avant de poster -> tutoriels FPDF
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 08/10/2007, 14h41   #1
Membre habitué
 
Inscription : mai 2007
Messages : 262
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : mai 2007
Messages : 262
Points : 137
Points : 137
Par défaut [FPDF] Création d'un tableau dynamique

Bonjour,

Je débute à peine dans la conversion de php vers PDF.

Grâce à vos tutos, j'ai pu comprendre la structure type de ce document mais, je n'arrive pas à créer un tableau qui contiennent des données dynamiques et donc qui incrémente son nombre de ligne en fonction des données...
Voici la partie du code qui ne fonctionne pas :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$pro3=$_POST['projet'];
 
$histo=mysql_query("select * from tab_histo where id_projet='$pro3'") or die (msql_error());
		while ($data=mysql_fetch_object($histo))
		{
 
			$chapitre=mysql_query("select * from tab_chap where id_chap='$data->id_chap'") or die(mysql_error());
			while ($data2=mysql_fetch_object($chapitre))
		{
		$contenuTableau = array(
		$data2->chap_nom, '100 %',$data->result,
		);	
  }
  }
$data2 et $data peuvent contenir plusieurs données et j'aimerai qu'elles soient toutes traitées or, il me traite seulement la première...

De plus, lors de la création du PDF, mes données ne sont pas mises à jour, il faut que j'actualise... Est-ce normal ?
Merci d'avance pour votre aide
__________________
The Alliance !
Little_flower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2007, 17h27   #2
Membre expérimenté
 
Avatar de jc_cornic
 
Inscription : octobre 2006
Messages : 624
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : octobre 2006
Messages : 624
Points : 588
Points : 588
Envoyer un message via MSN à jc_cornic
Salut, pourrais-tu préciser la librairie utilisée ?? FPDF phpToPDF ou autre ???

Et pourrais tu donner ton code complet ??

++
JC
__________________
VELOMASTER, idée cadeau ? un jeu de plateau

Hummmmm, des donuts !!!!

Merci de penser à , et et aussi
jc_cornic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 08h47   #3
Membre habitué
 
Inscription : mai 2007
Messages : 262
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : mai 2007
Messages : 262
Points : 137
Points : 137
Bien sûr :

Je travaille avec FPDF et voici mo code complet :

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
<?php
include("config_db.inc.php");
?>
<?php
include("phpToPDF.php");
$pro3=$_POST['projet'];
$PDF=new phpToPDF();
$PDF->AddPage();
$PDF->SetFont('Arial','B',12);

// on écrit ce que l'on veut dans le document PDF...
//Selection de mon projet
		$pro=mysql_query("SELECT projet_nom from tab_projet WHERE id_projet='$pro3'") or die(mysql_error());
		$pro2=mysql_fetch_array($pro);
		$projet_nom=$pro2['projet_nom'];
$analyse=mysql_query("select * from analyse where id_projet='$pro3'");
		$PDF->Text(40,10,$projet_nom);
		
		while ($data=mysql_fetch_object($analyse))
		{
		//Selection de mon analyse type
		$anal=mysql_query("SELECT analtype_nom from tab_analysetype WHERE id_analtype='$data->id_analtype'") or die(mysql_error());
		$anal2=mysql_fetch_array($anal);
		$anal3=$anal2['analtype_nom'];
		
		//Selection de mon Chapitre
		$chap=mysql_query("SELECT chap_nom from tab_chap WHERE id_chap='$data->id_chap'") or die(mysql_error());
		$chap2=mysql_fetch_array($chap);
		$chap3=$chap2['chap_nom'];
	
		//Selection de ma question
		$quest=mysql_query("SELECT quest_nom from tab_quest WHERE id_quest='$data->id_quest'") or die(mysql_error());
		$quest2=mysql_fetch_array($quest);
		$quest3=$quest2['quest_nom'];
		
		//Selection de ma réponse
		$rep=mysql_query("SELECT rep_nom from tab_rep WHERE id_rep='$data->id_rep'") or die(mysql_error());
		$rep2=mysql_fetch_array($rep);
		$rep3=$rep2['rep_nom'];
		
		//Selection de la qualif de ma réponse
		$qualif=mysql_query("SELECT qualif_nom from tab_qualif WHERE id_qualif='$data->id_qualif'") or die(mysql_error());
		$qualif2=mysql_fetch_array($qualif);
		$qualif3=$qualif2['qualif_nom'];
		$PDF->Write(10,"$chap3 \nA la question $quest3\nJe réponds $rep3\n$qualif3\n");
			if ($data->repOuv_nom !== '0') {
		$PDF->Write(10,"J'ajoute $data->repOuv_nom\n");
		}
		if ($data->comm_nom !== '0') {
		$PDF->Write(10,"$data->comm_nom\n\n");
		}
		}
		$PDF->Write(10,"Analyse de chaque chapitre :\n\n");
		
// Définition des propriétés du tableau.
$proprietesTableau = array(
	'TB_ALIGN' => 'L',
	'L_MARGIN' => 15,
	'BRD_COLOR' => array(0,76,177),
	'BRD_SIZE' => '0.3',
	);

// Définition des propriétés du header du tableau.	
$proprieteHeader = array(
	'T_COLOR' => array(150,10,10),
	'T_SIZE' => 12,
	'T_FONT' => 'Arial',
	'T_ALIGN' => 'C',
	'V_ALIGN' => 'T',
	'T_TYPE' => 'B',
	'LN_SIZE' => 7,
	'BG_COLOR_COL0' => array(170, 240, 230),
	'BG_COLOR' => array(170, 240, 230),
	'BRD_COLOR' => array(0,92,177),
	'BRD_SIZE' => 0.2,
	'BRD_TYPE' => '1',
	'BRD_TYPE_NEW_PAGE' => '',
	);

// Contenu du header du tableau.	
$contenuHeader = array(
	50, 50, 50,
	"Chapitres", "Valeur de référence", "Valeur calculée",
	);

// Définition des propriétés du reste du contenu du tableau.	
$proprieteContenu = array(
	'T_COLOR' => array(0,0,0),
	'T_SIZE' => 10,
	'T_FONT' => 'Arial',
	'T_ALIGN_COL0' => 'L',
	'T_ALIGN' => 'R',
	'V_ALIGN' => 'M',
	'T_TYPE' => '',
	'LN_SIZE' => 6,
	'BG_COLOR_COL0' => array(245, 245, 150),
	'BG_COLOR' => array(255,255,255),
	'BRD_COLOR' => array(0,92,177),
	'BRD_SIZE' => 0.1,
	'BRD_TYPE' => '1',
	'BRD_TYPE_NEW_PAGE' => '',
	);	

$histo=mysql_query("select * from tab_histo where id_projet='$pro3'") or die (msql_error());
		while ($data=mysql_fetch_object($histo))
		{
						
			$chapitre=mysql_query("select * from tab_chap where id_chap='$data->id_chap'") or die(mysql_error());
			while ($data2=mysql_fetch_object($chapitre))
		{
		$contenuTableau = array(
		$data2->chap_nom, '100 %',$data->result,
		);	
  }
  }
// D'abord le PDF, puis les propriétés globales du tableau. 
// Ensuite, le header du tableau (propriétés et données) puis le contenu (propriétés et données)
$PDF->drawTableau($PDF, $proprietesTableau, $proprieteHeader, $contenuHeader, $proprieteContenu, $contenuTableau);

$PDF->Output("test2.PDF", "F");	
	// affiche le document test.PDF dans une iframe.
echo "
	<iframe src='test2.PDF' width='100%' height='100%'>
	[Your browser does <em>not</em> support <code>iframe</code>,
	or has been configured not to display inline frames.
	You can access <a href='./test2.PDF'>the document</a>
	via a link though.]</iframe>";
?>
Voila je me suis aidée des tuto que j'ai trouvé en ligne...

Je te redis juste mon pb : créer un tableau dynamique en fct du nombre de données... Je t'ai mis en gras le passage censé être dynamique !!!

(Au passage, j'ai bien un tableau qui se forme mais seulement avec une seule ligne de données...)

Merci d'avance !
__________________
The Alliance !
Little_flower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 13h20   #4
Membre expérimenté
 
Avatar de jc_cornic
 
Inscription : octobre 2006
Messages : 624
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : octobre 2006
Messages : 624
Points : 588
Points : 588
Envoyer un message via MSN à jc_cornic
Salut, en fait quand tu passes dans ta boucle "while", tu écrase le tableau en le redéclarant..

Tu devrais utiliser la méthode "array_push" pour ajouter à chaque passage dans le while un item à ton tableau.

tu as le manuel ICI


Bonne continuation
++
JC
__________________
VELOMASTER, idée cadeau ? un jeu de plateau

Hummmmm, des donuts !!!!

Merci de penser à , et et aussi
jc_cornic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 14h15   #5
Membre habitué
 
Inscription : mai 2007
Messages : 262
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : mai 2007
Messages : 262
Points : 137
Points : 137
Bonjour,

J'ai essayé tant bien que mal mais cela ne fonctionne tjs pas...

Voici mon code :
Code :
1
2
3
4
5
6
7
8
9
while ($data=mysql_fetch_object($histo))
		{	
			$contenuTableau=array();				
			$chapitre=mysql_query("select * from tab_chap where id_chap='$data->id_chap'") or die(mysql_error());
			while ($data2=mysql_fetch_array($chapitre))
		{
		$contenuTableau = array_push($contenuTableau ,$data2->chap_nom, '100 %',$data->result);	
 
  }
Merci d'avance pour votre aide !
__________________
The Alliance !
Little_flower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 20h29   #6
Membre expérimenté
 
Avatar de jc_cornic
 
Inscription : octobre 2006
Messages : 624
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : octobre 2006
Messages : 624
Points : 588
Points : 588
Envoyer un message via MSN à jc_cornic
Citation:
Envoyé par Little_flower Voir le message
Bonjour,

J'ai essayé tant bien que mal mais cela ne fonctionne tjs pas...

Voici mon code :
Code :
1
2
3
4
5
6
7
8
9
while ($data=mysql_fetch_object($histo))
		{	
			$contenuTableau=array();				
			$chapitre=mysql_query("select * from tab_chap where id_chap='$data->id_chap'") or die(mysql_error());
			while ($data2=mysql_fetch_array($chapitre))
		{
		$contenuTableau = array_push($contenuTableau ,$data2->chap_nom, '100 %',$data2->result);	
		
  }
Merci d'avance pour votre aide !


Serait-ce à cause de ce que j'ai corrigé ??? data2 ???

Sinon, peux tu envoyer le code complet ?

++
JC

ps: peux tu aussi préciser ce qui ne marche pas...
__________________
VELOMASTER, idée cadeau ? un jeu de plateau

Hummmmm, des donuts !!!!

Merci de penser à , et et aussi
jc_cornic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2007, 09h19   #7
Membre habitué
 
Inscription : mai 2007
Messages : 262
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : mai 2007
Messages : 262
Points : 137
Points : 137
Voici mon code complet :

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
<?php
include("config_db.inc.php");
?>
<?php
include("phpToPDF.php");
$pro3=$_GET['projet'];
$PDF=new phpToPDF();
$PDF->AddPage();
$PDF->SetFont('Arial','B',12);
 
// on écrit ce que l'on veut dans le document PDF...
//Selection de mon projet
		$pro=mysql_query("SELECT projet_nom from tab_projet WHERE id_projet='$pro3'") or die(mysql_error());
		$pro2=mysql_fetch_array($pro);
		$projet_nom=$pro2['projet_nom'];
$analyse=mysql_query("select * from analyse where id_projet='$pro3'");
		$PDF->Text(40,10,$projet_nom);
 
		while ($data=mysql_fetch_object($analyse))
		{
		//Selection de mon analyse type
		$anal=mysql_query("SELECT analtype_nom from tab_analysetype WHERE id_analtype='$data->id_analtype'") or die(mysql_error());
		$anal2=mysql_fetch_array($anal);
		$anal3=$anal2['analtype_nom'];
 
		//Selection de mon Chapitre
		$chap=mysql_query("SELECT chap_nom from tab_chap WHERE id_chap='$data->id_chap'") or die(mysql_error());
		$chap2=mysql_fetch_array($chap);
		$chap3=$chap2['chap_nom'];
 
		//Selection de ma question
		$quest=mysql_query("SELECT quest_nom from tab_quest WHERE id_quest='$data->id_quest'") or die(mysql_error());
		$quest2=mysql_fetch_array($quest);
		$quest3=$quest2['quest_nom'];
 
		//Selection de ma réponse
		$rep=mysql_query("SELECT rep_nom from tab_rep WHERE id_rep='$data->id_rep'") or die(mysql_error());
		$rep2=mysql_fetch_array($rep);
		$rep3=$rep2['rep_nom'];
 
		//Selection de la qualif de ma réponse
		$qualif=mysql_query("SELECT qualif_nom from tab_qualif WHERE id_qualif='$data->id_qualif'") or die(mysql_error());
		$qualif2=mysql_fetch_array($qualif);
		$qualif3=$qualif2['qualif_nom'];
		$PDF->Write(10,"$chap3 \nA la question $quest3\nJe réponds $rep3\n$qualif3\n");
			if ($data->repOuv_nom !== '0') {
		$PDF->Write(10,"J'ajoute $data->repOuv_nom\n");
		}
		if ($data->comm_nom !== '0') {
		$PDF->Write(10,"$data->comm_nom\n\n");
		}
		}
		$PDF->Write(10,"Analyse de chaque chapitre :\n\n");
 
// Définition des propriétés du tableau.
$proprietesTableau = array(
	'TB_ALIGN' => 'L',
	'L_MARGIN' => 15,
	'BRD_COLOR' => array(0,76,177),
	'BRD_SIZE' => '0.3',
	);
 
// Définition des propriétés du header du tableau.	
$proprieteHeader = array(
	'T_COLOR' => array(150,10,10),
	'T_SIZE' => 12,
	'T_FONT' => 'Arial',
	'T_ALIGN' => 'C',
	'V_ALIGN' => 'T',
	'T_TYPE' => 'B',
	'LN_SIZE' => 7,
	'BG_COLOR_COL0' => array(170, 240, 230),
	'BG_COLOR' => array(170, 240, 230),
	'BRD_COLOR' => array(0,92,177),
	'BRD_SIZE' => 0.2,
	'BRD_TYPE' => '1',
	'BRD_TYPE_NEW_PAGE' => '',
	);
 
// Contenu du header du tableau.	
$contenuHeader = array(
	50, 50, 50,
	"Chapitres", "Valeur de référence", "Valeur calculée",
	);
 
// Définition des propriétés du reste du contenu du tableau.	
$proprieteContenu = array(
	'T_COLOR' => array(0,0,0),
	'T_SIZE' => 10,
	'T_FONT' => 'Arial',
	'T_ALIGN_COL0' => 'L',
	'T_ALIGN' => 'R',
	'V_ALIGN' => 'M',
	'T_TYPE' => '',
	'LN_SIZE' => 6,
	'BG_COLOR_COL0' => array(245, 245, 150),
	'BG_COLOR' => array(255,255,255),
	'BRD_COLOR' => array(0,92,177),
	'BRD_SIZE' => 0.1,
	'BRD_TYPE' => '1',
	'BRD_TYPE_NEW_PAGE' => '',
	);	
 
$histo=mysql_query("select * from analyse where id_projet='$pro3'") or die (msql_error());
		while ($data=mysql_fetch_object($histo))
		{	
			$contenuTableau=array();				
			$chapitre=mysql_query("select * from tab_chap where id_chap='$data->id_chap'") or die(mysql_error());
			while ($data2=mysql_fetch_array($chapitre))
		{
		$contenuTableau = array_push($contenuTableau ,$data2->chap_nom, '100 %',$data->result);	
 
  }
 
  }
 
// D'abord le PDF, puis les propriétés globales du tableau. 
// Ensuite, le header du tableau (propriétés et données) puis le contenu (propriétés et données)
$PDF->drawTableau($PDF, $proprietesTableau, $proprieteHeader, $contenuHeader, $proprieteContenu, $contenuTableau);
 
$PDF->Output("test2.PDF", "F");	
	// affiche le document test.PDF dans une iframe.
echo "
	<iframe src='test2.PDF' width='100%' height='100%'>
	[Your browser does <em>not</em> support <code>iframe</code>,
	or has been configured not to display inline frames.
	You can access <a href='./test2.PDF'>the document</a>
	via a link though.]</iframe>";
?>
Ce qui ne fonctionne pas : c'est le tableau...
Il devrait pouvoir s'incrémenter en fonction du nombre de réponses de MySQL mais, il ne m'affiche aucune donnée...

Merci d'avance
__________________
The Alliance !
Little_flower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2007, 19h14   #8
Membre expérimenté
 
Avatar de jc_cornic
 
Inscription : octobre 2006
Messages : 624
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : octobre 2006
Messages : 624
Points : 588
Points : 588
Envoyer un message via MSN à jc_cornic
Salut tu as tenté de mettre des print_r de ton tableau à différents endroits ???

Exemple ci après

Citation:
$histo=mysql_query("select * from analyse where id_projet='$pro3'") or die (msql_error());
while ($data=mysql_fetch_object($histo))
{
$contenuTableau=array();
$chapitre=mysql_query("select * from tab_chap where id_chap='$data->id_chap'") or die(mysql_error());
while ($data2=mysql_fetch_array($chapitre))
{
$contenuTableau = array_push($contenuTableau ,$data2->chap_nom, '100 %',$data->result);
echo "<br>tableau = ";
print_r($contenuTableau);


}

}

++
JC
__________________
VELOMASTER, idée cadeau ? un jeu de plateau

Hummmmm, des donuts !!!!

Merci de penser à , et et aussi
jc_cornic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 09h26   #9
Membre habitué
 
Inscription : mai 2007
Messages : 262
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : mai 2007
Messages : 262
Points : 137
Points : 137
Salut,

J'ai tester ce que tu m'as dit mais ca ne fonctionne pas non plus.

Pour le echo, je recois ceci :

tableau = 3
tableau = 3

(J'ai 2 réponses dans ma boucle donc je le recoi 2 fois...)
Mais il ne m'affiche absolument rien dans le tableau...

Que faire ?
__________________
The Alliance !
Little_flower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2007, 07h50   #10
Membre expérimenté
 
Avatar de jc_cornic
 
Inscription : octobre 2006
Messages : 624
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : octobre 2006
Messages : 624
Points : 588
Points : 588
Envoyer un message via MSN à jc_cornic
Salut, peux-tu détailler les tables histo et chapitre de ta BDD ??

Si ton tableau est vide, c'est peut-etre qu'il y a une instance de la table histo qui est vide et comme c'est la dernière instance de la table histo que avec laquelle tu remplis le contenuTaleau, c'est peut etre la raison...

Sinon, sans voir les deux tables, je vois pas, ...

++
JC
__________________
VELOMASTER, idée cadeau ? un jeu de plateau

Hummmmm, des donuts !!!!

Merci de penser à , et et aussi
jc_cornic 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 22h04.


 
 
 
 
Partenaires

Hébergement Web