Bonjour,

Je ne sais pas si je suis sur le bon Forum mais j'ai un souci de tableau en FPDF

Mon script fonctionne bien, mon tableau avec mes données sql s'affichent bien sur la première page mais des que mes données doivent s'afficher sur la seconde page c'est anarchique.

pouvez vous m'aider

merci

mon code

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
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
<?php
// Connexion à la BDD (à personnaliser)
$link = mysqli_connect(****t',****','****','****');
// Si base de données en UTF-8, il faudra utiliser la fonction utf8_decode() pour tous les champs de texte à afficher
 
//modification des caractères avec accents
mysqli_query($link,"SET CHARACTER SET 'utf8'");
mysqli_query($link,"SET SESSION collation_connection ='utf8_unicode_ci'");
//Gestion de l'affichage des enregistrements selon l'heure
 
$date = date("d/m/Y");
$heure = date("H:i");
 
// extraction des données à afficher dans le sous-titre
 
if($heure <"07:59:00")
{
$requete = 'SELECT * FROM journal_de_garde
            WHERE (date_debutEN = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY) AND heure_debut >="08:00:00") OR (date_debutEN = NOW() AND heure_debut <"08:00:00")';
}
else
{
 
$requete = 'SELECT * FROM journal_de_garde 
            WHERE date_debutEN= NOW() AND heure_debut >="08:00:00"' ;        
}
$result = mysqli_query($link, $requete);
// tableau des résultats
$data = mysqli_fetch_array($result);
mysqli_free_result($result);
 
// Appel de la librairie FPDF
require("fpdf.php");
 
 
 
// Création de la class PDF
class PDF extends FPDF {
  // Header
  function Header() {
    // Logo : 8 >position à gauche du document (en mm), 2 >position en haut du document, 80 >largeur de l'image en mm). La hauteur est calculée automatiquement.
    $this->Image('../../../images/LOGO_SDIS100.png',8,6);
    // Saut de ligne 20 mm
    $this->Ln(20);
 
    // Titre gras (B) police Helbetica de 18
    $this->SetFont('Helvetica','B',18);
    // fond de couleur blanc (valeurs en RGB)
    $this->setFillColor(255,255,255);
     // position du coin supérieur gauche par rapport à la marge gauche (mm)
    $this->SetX(70);
    // Texte : 80 >largeur ligne, 8 >hauteur ligne. Premier 0 >pas de bordure, 1 >retour à la ligneensuite, C >centrer texte, 1> couleur de fond ok  
    $this->Cell(80,0,'Journal de Garde du : ',0,1,'C',1);
    // Saut de ligne 10 mm
    $this->Ln(10);    
  }
  // Footer
  function Footer() {
    // Positionnement à 1,5 cm du bas
    $this->SetY(-15);
    // Police Arial italique 8
 
    // Numéro de page, centré (C)
    $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
  }
}
 
 
// On active la classe une fois pour toutes les pages suivantes
// Format portrait (>P) ou paysage (>L), en mm (ou en points > pts), A4 (ou A5, etc.)
$pdf = new PDF('P','mm','A4');
 
// Nouvelle page A4 (incluant ici logo, titre et pied de page)
$pdf->AddPage();
// Polices par défaut : Helvetica taille 8
$pdf->SetFont('Helvetica','',18);
// Couleur par défaut : noir
$pdf->SetTextColor(0);
// Compteur de pages {nb}
$pdf->AliasNbPages();
 
 
//-------------------------------------------------------------------------------------------------------------------------------------- Ligne date de la main courante
// Sous-titre calés à gauche, texte gras (Bold), police de caractère 18
$pdf->SetFont('Helvetica','B',18);
// couleur de fond de la cellule : gris clair
$pdf->setFillColor(255,255,255);
// Cellule avec les données du sous-titre sur 2 lignes, pas de bordure mais couleur de fond blanche
$pdf->Cell(75,6,'                                                                     '.$data['date_debutFR'],0,0,'C',1);    
$pdf->Ln(15); // saut de ligne 15mm
 
 
 
//-------------------------------------------------------------------------------------------------------------------------------------- Ligne equipe
$pdf->SetFont('Helvetica','U',14);
$pdf->SetTextColor(0,26,217);
// couleur de fond de la cellule : blanc
$pdf->setFillColor(255,255,255);
// Cellule avec les données du sous-titre sur 2 lignes, pas de bordure mais couleur de fond blanche
$pdf->Cell(20,6,'Equipe :',0,0,'L',1);   
 
$pdf->SetFont('Helvetica','',14);
$pdf->SetTextColor(0);
// couleur de fond de la cellule : blanc
$pdf->setFillColor(255,255,255);
// Cellule avec les données du sous-titre sur 2 lignes, pas de bordure mais couleur de fond blanche
$pdf->Cell(40,6,''.$data['equipe'],0,0,'L',1);     
$pdf->Ln(10); // saut de ligne 10mm
 
//-------------------------------------------------------------------------------------------------------------------------------------- Ligne sous off de garde
$pdf->SetFont('Helvetica','U',14);
$pdf->SetTextColor(0,26,217);
// couleur de fond de la cellule : blanc
$pdf->setFillColor(255,255,255);
// Cellule avec les données du sous-titre sur 2 lignes, pas de bordure mais couleur de fond blanche
$pdf->Cell(55,6,'Sous Officier de Garde :',0,0,'L',1);   
 
$pdf->SetFont('Helvetica','',14);
$pdf->SetTextColor(0);
// couleur de fond de la cellule : blanc
$pdf->setFillColor(255,255,255);
// Cellule avec les données du sous-titre sur 2 lignes, pas de bordure mais couleur de fond blanche
$pdf->Cell(40,6,''.$data['ssoffg'],0,0,'L',1);  
$pdf->Ln(10); // saut de ligne 10mm
 
 
//-------------------------------------------------------------------------------------------------------------------------------------- Ligne stationnaire jour
$pdf->SetFont('Helvetica','U',14);
$pdf->SetTextColor(0,26,217);
// couleur de fond de la cellule : blanc
$pdf->setFillColor(255,255,255);
// Cellule avec les données du sous-titre sur 2 lignes, pas de bordure mais couleur de fond blanche
$pdf->Cell(42,6,'Stationnaire Jour :',0,0,'L',1);   
 
$pdf->SetFont('Helvetica','',14);
$pdf->SetTextColor(0);
// couleur de fond de la cellule : blanc
$pdf->setFillColor(255,255,255);
// Cellule avec les données du sous-titre sur 2 lignes, pas de bordure mais couleur de fond blanche
$pdf->Cell(35,6,''.$data['stassJ'],0,0,'L',1);  
$pdf->Ln(10); // saut de ligne 10mm
 
//-------------------------------------------------------------------------------------------------------------------------------------- Ligne stationnaire nuit
$pdf->SetFont('Helvetica','U',14);
$pdf->SetTextColor(0,26,217);
// couleur de fond de la cellule : blanc
$pdf->setFillColor(255,255,255);
// Cellule avec les données du sous-titre sur 2 lignes, pas de bordure mais couleur de fond blanche
$pdf->Cell(42,6,'Stationnaire Nuit :',0,0,'L',1);   
 
$pdf->SetFont('Helvetica','',14);
$pdf->SetTextColor(0);
// couleur de fond de la cellule : blanc
$pdf->setFillColor(255,255,255);
// Cellule avec les données du sous-titre sur 2 lignes, pas de bordure mais couleur de fond blanche
$pdf->Cell(35,6,''.$data['stassN'],0,0,'L',1);  
$pdf->Ln(10); // saut de ligne 10mm
 
 
//-------------------------------------------------------------------------------------------------------------------------------------- Ligne séparatrice
$pdf->SetFont('Helvetica','',14);
// couleur de fond de la cellule : gris clair
$pdf->setFillColor(255,255,255);
$pdf->Cell(95,6,'-------------------------------------------------------------------------------------------------------------------',0,0,'L',1);  
 
$pdf->Ln(10); // saut de ligne 10mm
 
//-------------------------------------------------------------------------------------------------------------------------------------- Titre main courante
$pdf->SetFont('Helvetica','B',14);
// couleur de fond de la cellule : gris clair
$pdf->setFillColor(255,255,255);
$pdf->Cell(95,6,'Main Courante',0,0,'L',1);  
 
$pdf->Ln(10); // saut de ligne 10mm
 
//-------------------------------------------------------------------------------------------------------------------------------------- Tableau main courante
// Fonction en-tête des tableaux en 3 colonnes de largeurs variables
function entete_table($position_entete) {
  global $pdf;
  $pdf->SetDrawColor(183); //  Couleur des filets RVB
  $pdf->SetFillColor(170,180,255); // Couleur du fond RVB
  $pdf->SetTextColor(0); // Couleur du texte noir
  $pdf->SetY($position_entete);
  // position de colonne 1 (10mm à gauche)  
  $pdf->SetX(10);
  $pdf->Cell(10,8,utf8_decode('N°'),1,0,'C',1);  // 60 >largeur colonne, 8 >hauteur colonne
  // position de la colonne 2 (70 = 10+60)
  $pdf->SetX(20); 
  $pdf->Cell(30,8,utf8_decode('Date'),1,0,'C',1);
  // position de la colonne 3 (130 = 70+60)
  $pdf->SetX(50); 
  $pdf->Cell(60,8,utf8_decode('Rédacteur'),1,0,'C',1);
  // position de la colonne 3 (130 = 70+60)
  $pdf->SetX(110); 
  $pdf->Cell(90,8,utf8_decode('Nature'),1,0,'C',1);
 
  $pdf->Ln(); // Retour à la ligne
}
// AFFICHAGE EN-TÊTE DU TABLEAU
// Position ordonnée de l'entête en valeur absolue par rapport au sommet de la page (70 mm)
$position_entete = 112;
// police des caractères
$pdf->SetFont('Helvetica','',9);
$pdf->SetTextColor(0);
// on affiche les en-têtes du tableau
entete_table($position_entete);
 
 
 
 
$position_detail = 120; // Position ordonnée = $position_entete+hauteur de la cellule d'en-tête (60+8)
if($heure <"07:59:00")
{
//echo '<font color="white">c\'est ok</font>';
$requete2 = 'SELECT * FROM main_courante
            WHERE (date_mc = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY) AND heure >="08:00:00") OR (date_mc = NOW() AND heure <"08:00:00")';
}
else
{
 
$requete2 = 'SELECT * FROM main_courante 
            WHERE date_mc= NOW() AND heure >="08:00:00"' ;        
}
 
$result2 = mysqli_query($link, $requete2);
while ($data_visit = mysqli_fetch_array($result2)) {
  // position abcisse de la colonne 1 (10mm du bord)
  $pdf->SetY($position_detail);
  $pdf->SetX(10);
  $pdf->MultiCell(10,8,utf8_decode($data_visit['num_ordre']),1,'L');
  // position abcisse de la colonne 2 (20 = 10 + 10)  
  $pdf->SetY($position_detail);
  $pdf->SetX(20); 
  $pdf->MultiCell(30,8,utf8_decode($data_visit['date_mc2']),1,'L');
  // position abcisse de la colonne 3 (50 = 20+ 30)
  $pdf->SetY($position_detail);
  $pdf->SetX(50); 
  $pdf->MultiCell(60,8,utf8_decode($data_visit['emetteur']),1,'L');
  // position abcisse de la colonne 4 (110 = 50+ 60)
  $pdf->SetY($position_detail);
  $pdf->SetX(110); 
  $pdf->MultiCell(90,8,utf8_decode($data_visit['nature_consigne']),1,'L');
 
  // on incrémente la position ordonnée de la ligne suivante (+8mm = hauteur des cellules)  
  $position_detail += 8; 
}
mysqli_free_result($result2);
 
// Nouvelle page PDF
$pdf->AddPage();
// Polices par défaut : Helvetica taille 9
$pdf->SetFont('Helvetica','',11);
// Couleur par défaut : noir
$pdf->SetTextColor(0);
// Compteur de pages {nb}
$pdf->AliasNbPages();
$pdf->Cell(500,20,utf8_decode('Plus rien à vous dire ;-)'));
 
 
 // affichage à l'écran...
$pdf->Output('jdg.pdf','I');
 
 
 // ...ou export sur le serveur dans un dossier "fic"
//$pdf->Output('F', '../fic/test.pdf');
?>