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

Bibliothèques et frameworks PHP Discussion :

[FPDF] Exportation de donnees sous PDF mais la il y a un BUG


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 89
    Points : 26
    Points
    26
    Par défaut [FPDF] Exportation de donnees sous PDF mais la il y a un BUG
    Bonjour,

    J'ai repris les memes pages php que dans mes discussions précedentes pour les adapter pour faire un annuaire téléphonique ...

    Lors de l'export en PDF, il me mets les 3 dernieres colonnes les unes sous les autres au lieu de les mettrent à la suite ???? là je ne comprends pas ....

    Voici le 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
     
     
    <?php require_once('../Connexions/Connexionannuaire.php');
    mysql_select_db($database_Connexionannuaire, $Connexionannuaire);
     
    $orderby = isset($_GET['orderby']) ? $_GET['orderby'] : 'Poste';
    $export = isset($_GET['export']) ? $_GET['export'] : '';
     
    $query_rsDossiers = "SELECT annuaire.Poste, annuaire.Nom, annuaire.Prenom, annuaire.Fixe, annuaire.Portable, annuaire.Societe, annuaire.Adresse, annuaire.Ville, annuaire.Codepostal FROM annuaire ORDER BY $orderby";
    $rsDossiers = mysql_query($query_rsDossiers, $Connexionannuaire) or die(mysql_error());
    $totalRows_rsDossiers = mysql_num_rows($rsDossiers);
     
    if ($export === 'excel') {
    	header("Content-Type: text/x-csv");
    	header('Content-Disposition: attachement; filename="Exportexcel.csv"');
      $list = "\"Poste\"; \"Noms\";\"Prenoms\";\"Numeros Fixe\";\"Numeros Portable\";\"Societes\";\"Adresse\";\"Ville\";\"Codepostal\";\r\n";
      while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) {
        $list .= $row_rsDossiers['Poste'] .";". $row_rsDossiers['Nom'] .";". $row_rsDossiers['Prenom'] .";"
    	      . $row_rsDossiers['Fixe'] .";". $row_rsDossiers['Portable'] .";". $row_rsDossiers['Societe'] .";"
    		  . $row_rsDossiers['Adresse'] .";". $row_rsDossiers['Ville'] .";". $row_rsDossiers['Codepostal'] ."\r\n";
      }
      echo $list;
     
    } elseif ( $export === 'pdf' ) {
    ob_start(); // Enclenche la tamporisation de sortie
      require('fpdf.php');
     
    $x = '10';
    $y = '10';
     
    $pdf=new fpdf();//on instancie un objet Portait en milimètre et au format A4
    /**
    * Comme je met les mesure en mm cele me permet de placer tous les éléments aux mm prés
    * Cela fonctione sur le principe de l'abscice et l'ordonnée
    * le X représente la largeur
    * le Y représente la hauteur
    */ 
    $pdf->AliasNbPages(nb);
    $pdf->AddPage('P','mm','A4');//on crée la page 
    $pdf->Image('../images/logo CMF-2.jpg',10,10,30,10);
    $pdf->Image('../images/logo CMF-2.jpg',40,10,30,10);
    $pdf->Image('../images/logo CMF-2.jpg',70,10,30,10);
    $pdf->Image('../images/logo CMF-2.jpg',100,10,30,10);
    $pdf->Image('../images/logo CMF-2.jpg',110,10,30,10);
    $pdf->Image('../images/logo CMF-2.jpg',140,10,30,10);
    $pdf->Image('../images/logo CMF-2.jpg',170,10,30,10);
    /**
    * les mesure sont aux hasard à toi de modifier le 10/10 représente la position sur la page,30/10 la taille de l'image
    */ 
    $pdf->SetXY($x, $y);
    $pdf->SetFont('Times','BIU',20);// défint l'écriture pour le titre 
    $pdf->Cell(190,10,'Exportation de la liste des contacts en PDF',1,1,'C');
     
    //$nb_col = 9;
    //$largeur_total_page = 210;
    //$largeure_colonne = ($largeur_total_page -20) / $nb_col;
     
    $pdf->SetXY($x, $y+10);//on place le pointeur
    $pdf->SetFont('Times', '', 7);// définit l'écriture pour tous ce qui suit 
     
    while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) {
     
    $pdf->Cell(25, 5, $row_rsDossiers['Poste'], 1, 0, 'C', 0);
    $pdf->Cell(30, 5, $row_rsDossiers['Nom'], 1, 0, 'C', 0);
    $pdf->Cell(25, 5, $row_rsDossiers['Prenom'], 1, 0, 'C', 0);
    $pdf->Cell(17, 5, $row_rsDossiers['Fixe'], 1, 0, 'C', 0);
    $pdf->Cell(17, 5, $row_rsDossiers['Portable'], 1, 0, 'C', 0);
    $pdf->Cell(20, 5, $row_rsDossiers['Societe'], 1, 1, 'C', 0);
    $pdf->Cell(20, 5, $row_rsDossiers['Adresse'], 1, 1, 'C', 0);
    $pdf->Cell(20, 5, $row_rsDossiers['Ville'], 1, 1, 'C', 0);
    $pdf->Cell(20, 5, $row_rsDossiers['Codepostal'], 1, 1, 'C', 0);
    }
     
    ob_end_clean(); // Détruit les données du tampon de sortie et éteint la tamporisation de sortie
    $pdf->Output();
    }
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><!-- InstanceBegin template="/Templates/Listeannuaire.dwt" codeOutsideHTMLIsLocked="false" -->
    <head>
    <!-- InstanceBeginEditable name="doctitle" -->
    <title>Liste par nom d'affaire</title>
    <!-- InstanceEndEditable -->
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <!-- InstanceBeginEditable name="head" -->
    <!-- InstanceEndEditable -->
    </head>
     
    <body>
    <div align="center"></div>
    <table width="1150" height="452">
      <tr>
        <td width="1150" valign="top"><div align="center">
          <!-- InstanceBeginEditable name="tableau" -->
          <div align="center">
            <p>&nbsp;</p>
            <p><a href="liste.php?orderby=<?php echo $orderby; ?>&export=excel">Export au format Excel</a></p>
            <p><a href="liste.php?orderby=<?php echo $orderby; ?>&export=pdf"">Export au format PDF</a></p>
            <p>&nbsp;</p>
          </div>
          <table width="1150" border="1">
            <tr>
              <td width="80"><div align="center"><font color="#6633CC"><strong>Postes</strong></font></div></td>
              <td width="180"><div align="center"><font color="#6633CC"><strong>Noms</strong></font></div></td>
              <td width="0"><div align="center"><font color="#6633CC"><strong>Prenoms</strong></font></div></td>
              <td width="140"><div align="center"><font color="#6633CC"><strong>Numero Fixe</strong></font></div></td>
              <td width="140"><div align="center"><font color="#6633CC"><strong>Numeros Portable </strong></font></div></td>
              <td width="140"><div align="center"><font color="#6633CC"><strong>Societe</strong></font></div></td>
              <td width="140"><div align="center"><strong><font color="#6633CC">Adresse</font></strong></div></td>
              <td width="140"><div align="center"><font color="#6633CC"><strong>Ville</strong></font></div></td>
              <td width="140"><div align="center"><font color="#6633CC"><strong>Code Postal </strong></font></div></td>
            </tr>
            <?php while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) { ?>
            <tr>
              <td width="0"><div align="center"><?php echo $row_rsDossiers['Poste']; ?></div></td>
              <td width="0"><div align="center"><?php echo $row_rsDossiers['Nom']; ?></div></td>
              <td width="0"><div align="center"><?php echo $row_rsDossiers['Prenom']; ?></div></td>
              <td width="0"><div align="center"><?php echo $row_rsDossiers['Fixe']; ?></div></td>
              <td width="0"><div align="center"><?php echo $row_rsDossiers['Portable']; ?></div></td>
              <td width="0"><div align="center"><?php echo $row_rsDossiers['Societe']; ?></div></td>
              <td width="0"><div align="center"><?php echo $row_rsDossiers['Adresse']; ?></div></td>
              <td width="0"><div align="center"><?php echo $row_rsDossiers['Ville']; ?></div></td>
              <td width="0"><div align="center"><?php echo $row_rsDossiers['Codepostal']; ?></div></td>
            </tr>
            <?php } ?>
          </table>
          <!-- InstanceEndEditable -->
          <p>&nbsp;</p>
          <p>&nbsp;</p>
        </div></td>
      </tr>
    </table>
    <p align="center"><strong><font size="7" face="Arial, Helvetica, sans-serif"></font></strong></p>
    </body>
    <!-- InstanceEnd --></html>
    <?php
    mysql_free_result($rsDossiers);
    ?>
    Si quelqu'un a une explication sur ce phenomene je veux bien ..

  2. #2
    Membre éclairé
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    Par défaut
    Salut, oui il y a une réponses à ce phénomène étrange...

    Comme je te l'ai spécifié dans un autre post, la méthode Cell place une cellule à l'endroit ou se trouve le curseur (invisible) dans le document pdf.

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?
    ...
     
    for ($i = 0 ; $i<10 ; $i++)
      $pdf->Cell(25, 5, $i, 1, 0, 'C', 0);
    ?>
    Le code précédent va écrire dans le document pdf 10 cellules les unes en dessous des autres

    Le manuel de fpdf.org te donne
    Cell(float w [, float h [, string txt [, mixed border [, int ln [, string align [, int fill [, mixed link]]]]]]])
    ln

    Indique où se déplace la position courante après l'appel à la méthode. Les valeurs possibles sont :

    * 0 : à droite
    * 1 : au début de la ligne suivante
    * 2 : en dessous

    Mettre 1 est équivalent à mettre 0 et appeler la méthode Ln() juste après. La valeur par défaut est 0.
    Si tu veux les mettre les unes à côté des autres, deux solutions :
    1) tu spécifie la variable "ln" dans l'appel de la méthode Cell à la valeur 0
    2) tu ajoutes au code un placement du curseur à l'aide de la péthode setXY(x,y);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?
    ...
     
    for ($i = 0 ; $i<10 ; $i++)
     {
        $pdf->SetXY(10*$i, 0);
        $pdf->Cell(25, 5, $i, 1, 0, 'C', 0);
     }
    ?>
    Dans ton cas, tu veux dessiner plusieurs colonnes mais tu les construits colonnes par colonnes et pas ligne par ligne... Tu dois donc écrire une colonne en spécifiant "ln"=2 pour avoir les cell de ta colonne les unes sous les autres.
    Ensuite, pour changer de colonne, il faut replacer le curseur avec SetXY

    solution:
    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
     
    $pdf->SetFont('Times', '', 7);// définit l'écriture pour tous ce qui suit 
    $x=0;
    $y=0;
     
    while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) {
    $pdf->SetXY($x, $y);//on place le pointeur
    $pdf->Cell(25, 5, $row_rsDossiers['Poste'], 1, 0, 'C', 0);
    $pdf->Cell(30, 5, $row_rsDossiers['Nom'], 1, 0, 'C', 0);
    $pdf->Cell(25, 5, $row_rsDossiers['Prenom'], 1, 0, 'C', 0);
    $pdf->Cell(17, 5, $row_rsDossiers['Fixe'], 1, 0, 'C', 0);
    $pdf->Cell(17, 5, $row_rsDossiers['Portable'], 1, 0, 'C', 0);
    $pdf->Cell(20, 5, $row_rsDossiers['Societe'], 1, 1, 'C', 0);
    $pdf->Cell(20, 5, $row_rsDossiers['Adresse'], 1, 1, 'C', 0);
    $pdf->Cell(20, 5, $row_rsDossiers['Ville'], 1, 1, 'C', 0);
    $pdf->Cell(20, 5, $row_rsDossiers['Codepostal'], 1, 1, 'C', 0);
     
    $x += 30; // ca décale ta colonne suivante..
    }
     
    ob_end_clean(); // Détruit les données du tampon de sortie et éteint la tamporisation de sortie
    $pdf->Output();
    Espérant t'avoir aidé...

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

    Hummmmm, des donuts !!!!

    Merci de penser à , et et aussi

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 89
    Points : 26
    Points
    26
    Par défaut
    Ouais ça à l'air pas mal comme ça mais le soucis c'est que mes 66 lignes ne sont plus que sur une seule et toute decalée de 30 je pense ...

    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
     
    $pdf->SetFont('Times', '', 7);// définit l'écriture pour tous ce qui suit 
    $x=10;
    $y=20;
     
    while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) {
    $pdf->SetXY($x, $y);//on place le pointeur
    $pdf->Cell(25, 5, $row_rsDossiers['Poste'], 1, 0, 'C', 0);
    $pdf->Cell(30, 5, $row_rsDossiers['Nom'], 1, 0, 'C', 0);
    $pdf->Cell(25, 5, $row_rsDossiers['Prenom'], 1, 0, 'C', 0);
    $pdf->Cell(17, 5, $row_rsDossiers['Fixe'], 1, 0, 'C', 0);
    $pdf->Cell(17, 5, $row_rsDossiers['Portable'], 1, 0, 'C', 0);
    $pdf->Cell(20, 5, $row_rsDossiers['Societe'], 1, 1, 'C', 0);
    $pdf->Cell(20, 5, $row_rsDossiers['Adresse'], 1, 1, 'C', 0);
    $pdf->Cell(20, 5, $row_rsDossiers['Ville'], 1, 1, 'C', 0);
    $pdf->Cell(20, 5, $row_rsDossiers['Codepostal'], 1, 1, 'C', 0);
     
    $x += 30; // ca décale ta colonne suivante..
    }
     
    ob_end_clean(); // Détruit les données du tampon de sortie et éteint la tamporisation de sortie
    $pdf->Output();
    }
    ?>
    J'ai modifié la position x et y pour la mettre juste sous le titre de ma page ...

  4. #4
    Membre éclairé
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    Par défaut
    Oui, j'ai oublié un détail, tu fais ligne par ligne (et non col par col comme je pensait au début...)

    Donc, premier passage dans ta boucle, normal puis il faut changer $y et non $x comme je te l'avais dit...

    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
    $pdf->SetFont('Times', '', 7);// définit l'écriture pour tous ce qui suit 
    $x=10;
    $y=20;
     
    while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) {
    $pdf->SetXY($x, $y);//on place le pointeur
    $pdf->Cell(25, 5, $row_rsDossiers['Poste'], 1, 0, 'C', 0);
    $pdf->Cell(30, 5, $row_rsDossiers['Nom'], 1, 0, 'C', 0);
    $pdf->Cell(25, 5, $row_rsDossiers['Prenom'], 1, 0, 'C', 0);
    $pdf->Cell(17, 5, $row_rsDossiers['Fixe'], 1, 0, 'C', 0);
    $pdf->Cell(17, 5, $row_rsDossiers['Portable'], 1, 0, 'C', 0);
    $pdf->Cell(20, 5, $row_rsDossiers['Societe'], 1, 1, 'C', 0);
    $pdf->Cell(20, 5, $row_rsDossiers['Adresse'], 1, 1, 'C', 0);
    $pdf->Cell(20, 5, $row_rsDossiers['Ville'], 1, 1, 'C', 0);
    $pdf->Cell(20, 5, $row_rsDossiers['Codepostal'], 1, 1, 'C', 0);
     
    $y += 5; // ca décale ta ligne suivante..
    }
     
    ob_end_clean(); // Détruit les données du tampon de sortie et éteint la tamporisation de sortie
    $pdf->Output();
    }
    ?>
    Là, ça devrait marcher

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

    Hummmmm, des donuts !!!!

    Merci de penser à , et et aussi

Discussions similaires

  1. [AC-2010] Exporter un état sous pdf en mode paysage
    Par kawaya dans le forum VBA Access
    Réponses: 5
    Dernier message: 09/08/2013, 11h00
  2. [FPDF] Export PDF avec php
    Par momo09 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 27/07/2007, 16h50
  3. [FPDF] Exporter résultat en PDF mais sous forme de tableau
    Par Luverger dans le forum Bibliothèques et frameworks
    Réponses: 13
    Dernier message: 09/03/2007, 12h13
  4. [VB & Access] Exporter des données sous Excel
    Par wperezrobles dans le forum Access
    Réponses: 1
    Dernier message: 20/09/2006, 11h54
  5. [FPDF] Export de PDF à partir d'un fichier PHP
    Par Mat5725 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 05/04/2006, 20h57

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