Utilisation fpdf et php [Résolu]

flopad 531 Messages postés mercredi 28 septembre 2005Date d'inscription 6 mars 2009 Dernière intervention - 20 févr. 2006 à 08:40 - Dernière réponse : flopad 531 Messages postés mercredi 28 septembre 2005Date d'inscription 6 mars 2009 Dernière intervention
- 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>
Afficher la suite 

Votre réponse

2 réponses

cedriclomb 277 Messages postés samedi 19 novembre 2005Date d'inscription 27 avril 2010 Dernière intervention - 26 févr. 2006 à 13:50
+3
Utile
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>
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cedriclomb
flopad 531 Messages postés mercredi 28 septembre 2005Date d'inscription 6 mars 2009 Dernière intervention - 27 févr. 2006 à 08:17
0
Utile
C'est bon j'ai trouvé...
Commenter la réponse de flopad

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.