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
| <?php
// Connexion à la BDD
$bddname = 'xxx';
$hostname = 'xxx';
$username = 'xxx';
$password = 'xxx';
$db = mysqli_connect($hostname, $username, $password, $bddname);
// Appel de la librairie FPDF
require("fpdf/fpdf.php");
// Création de la classe PDF étendue
class PDF extends FPDF {
// Variable pour suivre la première page
protected $isFirstPage = true;
protected $extractionInfo = '';
// Méthode pour définir les informations d'extraction
public function setExtractionInfo($info) {
$this->extractionInfo = $info;
}
// En-tête de page
function Header() {
if ($this->isFirstPage) {
// Informations spécifiques à la première page
$this->SetFont('Helvetica','B',14);
$this->Cell(0,10,'Liste des amicalistes',0,1,'C');
$this->SetFont('Helvetica','',11);
$now = date('d/m/Y');
$heure = date('H:i');
// Infos à gauche
$this->SetXY(10, 20);
$this->Cell(0,6,'En date du : ' . $now,0,1,'L');
// Infos à droite
$this->SetXY(120, 20);
$this->Cell(0,6,utf8_decode("Extraction effectuée par : " . $this->extractionInfo),0,1,'R');
$this->SetXY(120, 25);
$this->Cell(0,6,utf8_decode("Le : " . $now . " à " . $heure),0,1,'R');
$this->Ln(10); // Saut de ligne après les infos
$this->isFirstPage = false; // Marquer que la première page a été traitée
} else {
// Pour les pages suivantes, ajouter un petit espace
$this->Ln(5);
}
// En-tête du tableau
$this->SetFillColor(221,221,221);
$this->SetDrawColor(183,183,183);
$this->SetTextColor(0);
$this->SetFont('Helvetica','B',11);
$this->Cell(80,8,'NOM',1,0,'C',1);
$this->Cell(80,8,'PRENOM',1,0,'C',1);
$this->Cell(35,8,'Enfant de - 18 ans',1,1,'C',1);
$this->SetFont('Helvetica','',11);
}
// Pied de page
function Footer() {
// Positionnement à 1,5 cm du bas
$this->SetY(-15);
$this->SetFont('Helvetica','I',8);
$this->Cell(0,5,'Mes coordonnées - Mon téléphone',0,0,'C');
}
}
// Activation de la classe
$pdf = new PDF('P','mm','A4');
$pdf->SetAutoPageBreak(true, 20); // Gestion automatique des sauts de page avec une marge de 20mm
$pdf->AddPage();
// Récupérer les informations d'extraction (exemple : utilisateur actuel)
$req1 = "SELECT * FROM users ORDER BY statut DESC, login ASC LIMIT 1";
$rep1 = mysqli_query($db, $req1);
$row1 = mysqli_fetch_array($rep1);
// Définir les informations d'extraction dans l'objet PDF
$pdf->setExtractionInfo($row1['login']);
// Liste des détails
$req2 = "SELECT * FROM users ORDER BY statut DESC, login ASC";
$rep2 = mysqli_query($db, $req2);
while ($row2 = mysqli_fetch_array($rep2)) {
$enfant = ($row2['statut'] == 2) ? "OUI" : "NON";
// Vérifier si un saut de page est nécessaire
if($pdf->GetY() > 270){ // Ajustez cette valeur en fonction de vos marges et de la taille du papier
$pdf->AddPage();
}
// Ajouter les données dans le tableau
$pdf->Cell(80,8,utf8_decode($row2['nom']),1,0,'L');
$pdf->Cell(80,8,utf8_decode($row2['prenom']),1,0,'L');
$pdf->Cell(35,8,$enfant,1,1,'C');
}
// Définir le nom du fichier PDF
$nom = 'amicalistes-' . $row1['id'] . '.pdf';
// Générer le PDF
$pdf->Output($nom,'I');
?> |
Partager