IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Affichage tableau fpdf sur deux pages


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 412
    Par défaut Affichage tableau fpdf sur deux pages
    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');
    ?>

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 672
    Par défaut
    avant de créer une nouvelle ligne, vous devez détecter s'il y a un changement de page.
    donc déjà ajoutez cette méthode dans la classe PDF

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        function placement_nouvelle_page($hauteur) {
     
        	if (	$this->AcceptPageBreak()
        		&&	!$this->InHeader
        		&&	!$this->InFooter
        		&&	(($this->y + $hauteur) > $this->PageBreakTrigger)
        	) {
    			// Automatic page break
    			$x2 = $this->x;
    			$this->AddPage($this->CurOrientation,$this->CurPageSize);
    			$this->x = $x2;
    		}
     
        }

    et ensuite construisez le tableau comme ça :
    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
    while ($data_visit = mysqli_fetch_array($result2)) {
     
    	$pdf->placement_nouvelle_page(8); // 8 mm = hauteur des cellules
     
    	$position_detail = $pdf->GetY();
     
    	// 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 (+ 8 mm = hauteur des cellules)	
    	$position_detail += 8;
     
    }

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 412
    Par défaut
    Ca fonctionne super, je n'y serai jamais arrive sans vous

    C'est pas évident le FPDF

    Encore merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/07/2008, 16h46
  2. probleme "erreur sur la page"
    Par jeremy_chauvel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/11/2006, 14h12
  3. probleme lecture video sur ma page
    Par pippoprod dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 12/02/2006, 10h00
  4. [CR] probleme de somme sur plusieurs pages
    Par d@rthwing dans le forum SAP Crystal Reports
    Réponses: 9
    Dernier message: 26/08/2005, 14h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo