Utilisation fpdf et php [Résolu]

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

Votre réponse

2 réponses

Meilleure réponse
Messages postés
277
Date d'inscription
samedi 19 novembre 2005
Dernière intervention
27 avril 2010
26 févr. 2006 à 13:50
3
Merci
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>

Merci cedriclomb 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cedriclomb
Messages postés
531
Date d'inscription
mercredi 28 septembre 2005
Dernière intervention
6 mars 2009
27 févr. 2006 à 08:17
0
Merci
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.