Bonjour,

Dans ma quête des absents et présents, j'ai pu arriver à générer une liste de joueurs complète via un formulaire qui envoie la liste en base de données.

Je reprends maintenant un script trouvé sur https://www.webtolosa.com/2019/12/20/tutoriel-fpdf-php/ qui me génère un PDF, mais si j'ai plus d'une trentaine d'enregistrements, mon PDF déraille.
A la première page, tout est ok, à partir de la 2e page, le script me génère le tableau mais chaque colonne est affichée sur une seule page.
Exemple Page 1 :
_________________
|-----|--------|-------|
|-----|--------|-------|
|-----|--------|-------|
|-----|--------|-------|

En page 2, seule la première cellule de la ligne est affichée
_____
|-----|
En page 3, la 2e cellule de la meme ligne est affichée
En page 4, la 3e cellulle...
En page 5, on reprend avec la même chose qu'en page 2.
Etc..

Pour 150 inscriptions, j'obtiens 368 pages.

J'utilise la librairie fpdf.php trouvée dans le zip.
Voici mon script :

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
 
// extraction des données à afficher dans le sous-titre 
$requete = "SELECT * FROM `inscrits` WHERE categorie = 'S'";
$result = mysqli_query($link, $requete);
// tableau des résultats de la ligne > $data_voyageur['nom_champ']
$data_inscrit = mysqli_fetch_array($result);
mysqli_free_result($result);
// Appel de la librairie FPDF
require("fpdf/fpdf.php");
 
// 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 9
$pdf->SetFont('Helvetica','',9);
// Couleur par défaut : noir
$pdf->SetTextColor(0);
// Compteur de pages {nb}
$pdf->AliasNbPages();
 
$titre = 'u6';
// Sous-titre calées à gauche, texte gras (Bold), police de caractère 11
$pdf->SetFont('Helvetica','B',11);
// couleur de fond de la cellule : gris clair
$pdf->setFillColor(230,230,230);
// Cellule avec les données du sous-titre sur 2 lignes, pas de bordure mais couleur de fond grise
//$pdf->Cell(70,6,$titre,0,1,'L',1);		
$pdf->Cell(70,6,'DU '.$data_inscrit['date_entrainement'] . ' AU '.strtoupper(utf8_decode($data_inscrit['date_entrainement'])),0,1,'L',1);				
$pdf->Ln(5); // saut de ligne 10mm	
 
 
 
// Fonction en-tête des tableaux en 3 colonnes de largeurs variables
function entete_table($position_entete) {
	global $pdf;
	$pdf->SetDrawColor(183); // Couleur du fond RVB
	$pdf->SetFillColor(221); // Couleur des filets RVB
	$pdf->SetTextColor(0); // Couleur du texte noir
	$pdf->SetY($position_entete);
	// position de colonne 1 (10mm à gauche)	
	$pdf->SetX(10);
	$pdf->Cell(60,8,'Nom',1,0,'C',1);	// 60 >largeur colonne, 8 >hauteur colonne
	// position de la colonne 2 (70 = 10+60)
	$pdf->SetX(70); 
	$pdf->Cell(60,8,'Date naissance',1,0,'C',1);
	// position de la colonne 3 (130 = 70+60)
	$pdf->SetX(130); 
	$pdf->Cell(30,8,'id',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 (60 mm)
$position_entete = 50;
// 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 = 58; // Position ordonnée = $position_entete+hauteur de la cellule d'en-tête (60+8)
$requete2 = "SELECT * FROM `inscrits` WHERE categorie = 'S'";
 
$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(60,8,$data_visit['nom'],1,'C');
    // position abcisse de la colonne 2 (70 = 10 + 60)	
	$pdf->SetY($position_detail);
	$pdf->SetX(70); 
	$pdf->MultiCell(60,8,utf8_decode($data_visit['date_naissance']),1,'C');
	// position abcisse de la colonne 3 (130 = 70+ 60)
	$pdf->SetY($position_detail);
	$pdf->SetX(130); 
	$pdf->MultiCell(30,8,$data_visit['id'],1,'C');
 
	// 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 ;-)'));
 
 
$pdf->Output('test.pdf','I'); // affichage à l'écran
// Ou export sur le serveur
// $pdf->Output('F', '../test.pdf');
D'où peut venir ce problème ?
J'ai essayé avec le script d'origine (et le sql importé dans ma base), c'est la même chose.
J'avais trouvé un autre script mais celui-là me donnait toutes les colonnes de la même largeur, ici, on peut facilement gérer les largeurs de colonnes.