Utilisation fpdf et php

Résolu
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009 - 20 févr. 2006 à 08:40
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009 - 27 févr. 2006 à 08:17
Bonjour, désolé d'insister et de revenir à la charge mais j'ai un gros soucis avec mon code que je n'arrive pas à résoudre et dont j'ai vraiment besoin.

Alors, j'ai donc ma base de données access, je veux la récupérer dans un fichier pdf.
Pour cela, l'utilisateur a le choix de récupérer les informations qu'il souhaite, sauf le nom que je ne mets pas dans le formulaire car il faut qu'il apparraisse systématiquement.
Mon code tel qu'il est ci-dessous fonctionne parfaitement, le seul problème est que je ne sais pas comment faire pour donner une largeur prédéfinie à chaque colonne; par exemple dire que la colonne 'Nom - prénom' doit faire 5cm, etc...

<?php
if (isset ($_POST['submit']) && $_POST['submit'] = == 'Valider') {


Connexion à la bdd
$base ="D:\\Qualite\Annuaire\Annuaire.mdb";
$Annuaire= "Annuaire";


//connection au serveur:
$cnx = odbc_connect( "DSN_Annuaire","" ,"") or die ("Impossible de se connecter à la base de donnée") ;

//PDF


define('FPDF_FONTPATH','font/');
require('fpdf/fpdf.php');
Infos concernant le doc pdf qui va être crée


$pdf =new FPDF('L','cm','A4');

$pdf->SetFont('Arial','B',12);
$pdf->AddPage();
$pdf->SetFillColor(220,130,130);
$pdf->SetTextColor(255,255,255);

//Titres des colonnes
Création des entêtes des colonnes du doc pdf


$header = array();
$header[] = 'Nom - Prénom';
for ($m=0;$m<count($_POST['choix']);$m++){
switch($_POST['choix'][$m]){
case 'Societe': $header[] = 'Site';
break;
case 'Fixe': $header[] = 'N° Téléphone fixe';
break;
case 'Fax': $header[] = 'N° fax';
break;
case 'Portable': $header[] = 'N° Portable';
break;
case 'Mail': $header[] = 'Adresse e-mail';
break;
default: break;
}
}
L'entête 'Nom - Prénom' apparait systématiquement puisque l'utilisateur n'a pas la possibilité de l'enlever


$pdf->cell(4.7,1,$header[0],1,0,'C',1);// Le nom dans tous les cas
Selon les cases cochées par l'utilisateur, on fait apparaitre ou non la colonne


for($i =0;$i<count($_POST['choix']);$i++)
{
if(isset($_POST['choix'][$i]))
$pdf->cell(4.7,1,$header[$i+1],1,0,'C',1);// les autres postes si cases cochées
}
Selon les cases cochées par l'utilisateur, j'adapte la requete qui va etre faite dans ma bdd grace à l'implode


if (isset($_POST['choix'])){
$addInQuery = implode(',', $_POST['choix']);
$addInQuery = ','.$addInQuery;
}
else $addInQuery = '';

$resultat = odbc_exec( $cnx, 'SELECT Nom'.$addInQuery.' FROM Annuaire ORDER BY Nom');


$pdf->SetFillColor(0xdd,0xdd,0xdd);
$pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','',8);
$pdf->SetXY(1,$pdf->GetY()+1);
$fond=0;
while( $row = odbc_fetch_array( $resultat ) ) //tant que c pas la fin de la table
{
$pdf->cell(4.7,0.7,$row['Nom'],1,0,'C',$fond);
for ($m=0;$m<count($_POST['choix']);$m++){
if(isset($_POST['choix'][$m]))
$pdf->cell(4.7,0.7,$row[$_POST['choix'][$m]],1,0,'C',$fond);
}


$pdf->SetXY(1,$pdf->GetY()+0.7);
$fond=!$fond;
}
$pdf->output();

}


?>
<html>
<head>
</head>


<form action="a.php" method="POST">

Ici donc mon "formulaire" qui permet à l'utilisateur de sélectionner les informations qu'il va récupérer sur le doc pdf.Par défaut, je coche toutes les cases.


Site

N° téléphone fixe

N° fax

N° portable

Adresse e-mail


</form>

</html>

2 réponses

cedriclomb Messages postés 275 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 27 avril 2010 1
26 févr. 2006 à 13:50
Bonjour,

J'ai trouvé ca dans l'aide de fpdf :

<HR>


Cell
<TT>Cell(float w [, float h [, string txt [, mixed border [, int ln [, string align [, int fill [, mixed link]]]]]]])</TT>
Version
1.0
Description
Imprime une cellule (zone rectangulaire) avec éventuellement des bords, un fond et une chaîne de caractères. Le coin supérieur gauche de la cellule correspond à la position courante. Le texte peut être aligné ou centré. Après l'appel, la position courante se déplace à droite ou un retour à la ligne est effectué. Il est possible de mettre un lien sur le texte.
Si le saut de page automatique est activé et que la cellule dépasse le seuil de déclenchement, un saut de page est effectué avant de l'imprimer.
Paramètres
<TT>w</TT>

<gras>Largeur de la cellule. Si elle vaut <TT>0</TT>, la cellule s'étend jusqu'à la marge droite de la page. </gras><TT>h</TT>
Hauteur de la cellule. Valeur par défaut : <TT>0</TT>. <TT>txt</TT>
Chaîne à imprimer. Valeur par défaut : chaîne vide. <TT>border</TT>
Indique si des bords doivent être tracés autour de la cellule. La valeur peut être soit un nombre :

<LI><TT>0</TT> : aucun bord
<LI><TT>1</TT> : cadre </LI>soit une chaîne contenant certains ou tous les caractères suivants (dans un ordre quelconque) :

<LI><TT>L</TT> : gauche
<LI><TT>T</TT> : haut
<LI><TT>R</TT> : droit
<LI><TT>B</TT> : bas </LI>La valeur par défaut est <TT>0</TT>. <TT>ln</TT>
Indique où se déplace la position courante après l'appel à la méthode. Les valeurs possibles sont :

<LI><TT>0</TT> : à droite
<LI><TT>1</TT> : au début de la ligne suivante
<LI><TT>2</TT> : en dessous </LI>Mettre <TT>1</TT> est équivalent à mettre <TT>0</TT> et appeler la méthode Ln() juste après. La valeur par défaut est <TT>0</TT>. <TT>align</TT>
Permet de centrer ou d'aligner le texte. Les valeurs possibles sont :

<LI><TT>L</TT> ou chaîne vide : alignement à gauche (valeur par défaut)
<LI><TT>C</TT> : centrage
<LI><TT>R</TT> : alignement à droite </LI><TT>fill</TT>
Indique si le fond de la cellule doit être coloré (1) ou transparent (0). Valeur par défaut : 0. <TT>link</TT>
URL ou identifiant retourné par AddLink().
Exemple

<TT>//Sélection de la police
$pdf->SetFont('Arial','B',16);
//Décalage de 8 cm à droite
$pdf->Cell(80);
//Texte centré dans une cellule 20*10 mm encadrée et retour à la ligne
$pdf->Cell(20,10,'Titre',1,1,'C'); </TT>
3
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
27 févr. 2006 à 08:17
C'est bon j'ai trouvé...
0
Rejoignez-nous