Comment utiliser fpdf dans mon script php
Résolu
fauve1512
Messages postés
206
Date d'inscription
Statut
Membre
Dernière intervention
-
fauve1512 Messages postés 206 Date d'inscription Statut Membre Dernière intervention -
fauve1512 Messages postés 206 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je n'ai jamais utiliser fpdf,je ne sais pas du tout comment l'intégrer dans mon code et comment faire un pdf..je vous demande de l'aide car j'ai regardé sur le site et avec mon ami google,mais je n'ai pas trouvé de tuto qui m'expliquerai du début à la fin le déroulement...Merci
Je n'ai jamais utiliser fpdf,je ne sais pas du tout comment l'intégrer dans mon code et comment faire un pdf..je vous demande de l'aide car j'ai regardé sur le site et avec mon ami google,mais je n'ai pas trouvé de tuto qui m'expliquerai du début à la fin le déroulement...Merci
A voir également:
- Comment utiliser fpdf dans mon script php
- Fpdf background image - Forum Webmastering
- Fpdf utf8 ✓ - Forum PHP
- Librairie FPDF - Forum PHP
- Fpdf multicell example ✓ - Forum Webmastering
- Insertion d'images avec FPDF ✓ - Forum Webmastering
112 réponses
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Sinon met moi ton script ici et j'essaierai de voir pour te faire ton CSS pour l'impression.
Ça me semble être la meilleure solution car rien n'empêche le visiteur de cliquer sur le bouton 'imprimer' de son navigateur plutôt que le lien vers le PDF que tu mettras.
Ça me semble être la meilleure solution car rien n'empêche le visiteur de cliquer sur le bouton 'imprimer' de son navigateur plutôt que le lien vers le PDF que tu mettras.
Essaye ce script.
Crée une page que tu nommes "mysql_table.php" ou ce que tu veux. et colle ceci dedans:
Ensuite,tu crées une deuxième page que tu nomme (par exemple pdf.php) et colle ceci dedans:
Ensuite,dans une page quelconque,tu appelles la page pdf.php par un lien hypertexte.
NB: j'espère que tu as téléchargé la bibliothèque fpdf ?
Crée une page que tu nommes "mysql_table.php" ou ce que tu veux. et colle ceci dedans:
<?php require('fpdf.php'); class PDF_MySQL_Table extends FPDF { var $ProcessingTable=false; var $aCols=array(); var $TableX; var $HeaderColor; var $RowColors; var $ColorIndex; function Header() { //Imprime l'en-tête du tableau si nécessaire if($this->ProcessingTable) $this->TableHeader(); } function TableHeader() { $this->SetFont('Arial','B',12); $this->SetX($this->TableX); $fill=!empty($this->HeaderColor); if($fill) $this->SetFillColor($this->HeaderColor[0],$this->HeaderColor[1],$this->HeaderColor[2]); foreach($this->aCols as $col) $this->Cell($col['w'],6,$col['c'],1,0,'C',$fill); $this->Ln(); } function Row($data) { $this->SetX($this->TableX); $ci=$this->ColorIndex; $fill=!empty($this->RowColors[$ci]); if($fill) $this->SetFillColor($this->RowColors[$ci][0],$this->RowColors[$ci][1],$this->RowColors[$ci][2]); foreach($this->aCols as $col) $this->Cell($col['w'],5,$data[$col['f']],1,0,$col['a'],$fill); $this->Ln(); $this->ColorIndex=1-$ci; } function CalcWidths($width,$align) { //Calcule les largeurs des colonnes $TableWidth=0; foreach($this->aCols as $i=>$col) { $w=$col['w']; if($w==-1) $w=$width/count($this->aCols); elseif(substr($w,-1)=='%') $w=$w/100*$width; $this->aCols[$i]['w']=$w; $TableWidth+=$w; } //Calcule l'abscisse du tableau if($align=='C') $this->TableX=max(($this->w-$TableWidth)/2,0); elseif($align=='R') $this->TableX=max($this->w-$this->rMargin-$TableWidth,0); else $this->TableX=$this->lMargin; } function AddCol($field=-1,$width=-1,$caption='',$align='L') { //Ajoute une colonne au tableau if($field==-1) $field=count($this->aCols); $this->aCols[]=array('f'=>$field,'c'=>$caption,'w'=>$width,'a'=>$align); } function Table($query,$prop=array()) { //Exécute la requête $res=mysql_query($query) or die('Erreur: '.mysql_error()."<BR>Requête: $query"); //Ajoute toutes les colonnes si aucune n'a été définie if(count($this->aCols)==0) { $nb=mysql_num_fields($res); for($i=0;$i<$nb;$i++) $this->AddCol(); } //Détermine les noms des colonnes si non spécifiés foreach($this->aCols as $i=>$col) { if($col['c']=='') { if(is_string($col['f'])) $this->aCols[$i]['c']=ucfirst($col['f']); else $this->aCols[$i]['c']=ucfirst(mysql_field_name($res,$col['f'])); } } //Traite les propriétés if(!isset($prop['width'])) $prop['width']=0; if($prop['width']==0) $prop['width']=$this->w-$this->lMargin-$this->rMargin; if(!isset($prop['align'])) $prop['align']='C'; if(!isset($prop['padding'])) $prop['padding']=$this->cMargin; $cMargin=$this->cMargin; $this->cMargin=$prop['padding']; if(!isset($prop['HeaderColor'])) $prop['HeaderColor']=array(); $this->HeaderColor=$prop['HeaderColor']; if(!isset($prop['color1'])) $prop['color1']=array(); if(!isset($prop['color2'])) $prop['color2']=array(); $this->RowColors=array($prop['color1'],$prop['color2']); //Calcule les largeurs des colonnes $this->CalcWidths($prop['width'],$prop['align']); //Imprime l'en-tête $this->TableHeader(); //Imprime les lignes $this->SetFont('Arial','',11); $this->ColorIndex=0; $this->ProcessingTable=true; while($row=mysql_fetch_array($res)) $this->Row($row); $this->ProcessingTable=false; $this->cMargin=$cMargin; $this->aCols=array(); } } ?>
Ensuite,tu crées une deuxième page que tu nomme (par exemple pdf.php) et colle ceci dedans:
<?php require('mysql_table.php'); class PDF extends PDF_MySQL_Table { function Header() { //Titre $this->SetFont('Arial','',18); $this->Cell(0,6,'Donnees statistiques',0,1,'C'); $this->Ln(10); //Imprime l'en-tête du tableau si nécessaire parent::Header(); } } //Connexion à la base mysql_connect('server','login','password'); mysql_select_db('db'); $pdf->AddPage(); //Notre tableau $pdf->AddCol('uf',30,'UF','C'); $pdf->AddCol('service',30,'Service'); $pdf->AddCol('sortie_stock',20,'Sortie Stock','R'); $pdf->AddCol('cartouche',50,'Cartouche'); $pdf->AddCol('date_sortie',30,'Date de Sortie','R'); $prop=array('HeaderColor'=>array(255,150,100), 'color1'=>array(210,245,255), 'color2'=>array(255,255,210), 'padding'=>2); $pdf->Table('select * from servcart order by date_sortie',$prop); $pdf->Output(); ?>
Ensuite,dans une page quelconque,tu appelles la page pdf.php par un lien hypertexte.
NB: j'espère que tu as téléchargé la bibliothèque fpdf ?
merci...j'étais entrain de travailler sur mon rapport..c'est pourquoi je ne réponds pas aussi vite..je vais faire ce que tu m'as dit et je te tiens au courant...et oui j'avais télécharger fpdf
j'ai une erreur comme quoi une variable n'est pas définit dans mon fichier pdf.php à la ligne 22 donc celle-ci
$pdf->AddPage();$pdf doit-être déclaré ?????
j'ai déclaré
$pdf->AddPage();
Cool cela marche ..mais petit soucis quand j'ouvre ma page j'ai directement le pdf ..mignon d'ailleurs lol...
J'ai mis cela au départ
$pdf=new PDF();
$pdf->AddPage();
Cool cela marche ..mais petit soucis quand j'ouvre ma page j'ai directement le pdf ..mignon d'ailleurs lol...
J'ai mis cela au départ
<div> <p><a href="index.php?idpage=3"><img src="images/print.png" width="48" height="48" /></a></p></div>donc mon include pdf.php doit-être dans ce lien
pdf.php est la page qui traite la création de ton pdf,je ne vois pas pourquoi mettre un include (sauf si je ne comprends pas). A la place de ton index.php?idpage=3 tu dois mettre le lien pour générer le pdf (donc pdf.php).
Tu m'excuses pour la déclaration,je l'avais sauté (trop aller vite).
Les couleurs du pdf,tu peux les modifier à ton goût pour le rendre encore plus mignon. lol
Tu m'excuses pour la déclaration,je l'avais sauté (trop aller vite).
Les couleurs du pdf,tu peux les modifier à ton goût pour le rendre encore plus mignon. lol
je t'explique j'ai une selection à faire qui s'affiche dans un tableau avec certaines données selectionnées quand tu clique sur imprimante (image)c'est là que le pdf doit ce faire...
Warning: require (php / mysql_table.php) [ function.require ]: failed to open stream: Aucun fichier ou répertoire dans C: \ Program Files \ wamp \ www \ gestioncart \ php \ pdf.php sur la ligne 8 voici l'erreur pourtant mon fichier est bien dans le dossier php
Bonjour,
ca y est, quand je fais imprimer cela me renvoye sur ma page pdf mais j'ai tout le tableau avec toutes les lignes et non la sélection que j'ai choisit
exemple :
UF SERVICE CARTOUCHE DATE SORTIE STOCK
4517 Archives BCI 6 E 520 Cyan 03/10/2011 3
4517 Archives 3600 Noire Q6470A 04/10/2011 1
4517 Archives 15 C6615D 04/10/2011 10
4517 Archives 520 Black 04/10/2011 25
ca y est, quand je fais imprimer cela me renvoye sur ma page pdf mais j'ai tout le tableau avec toutes les lignes et non la sélection que j'ai choisit
exemple :
UF SERVICE CARTOUCHE DATE SORTIE STOCK
4517 Archives BCI 6 E 520 Cyan 03/10/2011 3
4517 Archives 3600 Noire Q6470A 04/10/2011 1
4517 Archives 15 C6615D 04/10/2011 10
4517 Archives 520 Black 04/10/2011 25
tu sais la fameuse page avec les dates..lol je sélectionne dans une liste déroulante le service et dans deux champs date une plage de date ce qui me donne dans la même page le résultat dans un tableau et c'est ce résultat que je voudrait imprimer...
ah oui la page qui nous a fait passer deux semaines. Revenons sur le problème actuel.tu utilises un formulaire qui fait une recherche dans la BDD et t'affiche le résultat, et tu voudrais imprimer ce résultat en pdf. je vois deux solutions:
soit utiliser les sessions (afin de garder les variables postées cad date et service)
soit faire un deuxième formulaire et imprimer directement le résultat!
soit utiliser les sessions (afin de garder les variables postées cad date et service)
soit faire un deuxième formulaire et imprimer directement le résultat!
d'accord et le mieux c'est quoi car je dois rendre mon rapport ce soir et il me faut cette partie....lol
bon,j'ai jamais testé fpdf avec les sessions,donc je ne sais pas si tout va marcher.mais bon,tant qu'on a pas essayé ne disons pas que ça ne marche pas.
envoie moi tous les codes concernés (page de recherche,page d'impression) et on va essayer avec les sessions,si c'est bon alors Allélluia sinon,on passe par un autre formulaire.
envoie moi tous les codes concernés (page de recherche,page d'impression) et on va essayer avec les sessions,si c'est bon alors Allélluia sinon,on passe par un autre formulaire.
code page de recherche :
<!-- Recherche par services de consommation de cartouches-->
et page pdf.php (impression) :
<!-- Recherche par services de consommation de cartouches-->
<?php function convertionDate($dateEur){ $rsl = explode ('/',$dateEur); $rsl = array_reverse($rsl); return implode($rsl,'-'); } //gestion de la ligne selectionnée if (isset($_POST['service'])) {$v_service=$_POST['service'];} else {$v_service="";} ?> <table width="580" height="209" border="3"> <form name="rechercher" method="POST" action="index.php?idpage=3"> <tr> <td height="35" colspan="5" align="center" style="font-size:24px" >Consommation de cartouches</td> </tr> <tr> <td height="32" colspan="5" align="left"> <select name="service" > <option> Choisissez un service</option> <?php $requete = "SELECT DISTINCT service FROM servcart order by service"; $req = mysql_query($requete) or die( mysql_error() ) ; while ($donnees=mysql_fetch_array($req)) { $service = $donnees['service']; ?> <!-- affichage de la liste déroulante --> <option value="<?php echo $service ;?>" <?php if ($service == $v_service) { echo 'Selected' ; } ?> ><?php echo $service;?></option> <?php } ?> </select> </td> </tr> <tr> <td height="30" colspan="5" align="center"> <label>Entre : </label> <input type="text" id="datepicker" readonly name="date_debut" /> <label>Et : </label> <input type="text" id="datepicker1" readonly name="date_fin" /> </td> </tr> <tr> <th height="28" colspan="5" scope="row" align="center"> <input type="submit" value="Rechercher" /> </th> </tr> <tr> <th width="52" height="36" bgcolor="#5ab9d8" scope="col">UF</th> <th width="159" bgcolor="#5ab9d8" scope="col">SERVICE</th> <th width="191" bgcolor="#5ab9d8" scope="col">CARTOUCHE</th> <th width="77" bgcolor="#5ab9d8" scope="col">DATE</th> <th width="63" bgcolor="#5ab9d8" scope="col">SORTIE STOCK</th> </tr> <?php if (isset($_POST['date_debut'])and isset($_POST['date_fin'])and isset($_POST['service'])) { $v_service=$_POST['service']; $date_debut=convertionDate($_POST['date_debut']); $date_fin=convertionDate($_POST['date_fin']); $requete2 = "SELECT uf, service,cartouche,sortie_stock,DATE_FORMAT(date_sortie,'%d/%m/%Y') AS DateTemps FROM servcart WHERE service='$v_service' and date_sortie BETWEEN '$date_debut' and '$date_fin' order by DateTemps "; $req2 = mysql_query($requete2) or die( mysql_error() ) ; while ($donnees2=mysql_fetch_assoc($req2)) { ?> <tr> <td height="22"><?php echo $donnees2['uf']; ?></td> <td><?php echo $donnees2['service']; ?></td> <td><?php echo $donnees2['cartouche']; ?></td> <td><?php echo $donnees2['DateTemps']; ?></td> <td><?php echo $donnees2['sortie_stock']; ?></td> </tr> <?php }} ?> </form> </table> <?php /*lien permettant d'imprimer*/ echo'<a href="php/pdf.php" target="_blank"><img class="image" src="images/print.png" alt="imprimer"/></a>'; ?>
et page pdf.php (impression) :
<?php //Connexion à la base mysql_connect('localhost','root',''); mysql_select_db('gestion_cartouche'); require('mysql_table.php'); ob_end_clean(); class PDF extends PDF_MySQL_Table { function Header() { //Titre $this->SetFont('Arial','',18); $this->Cell(0,6,'Consommation',0,1,'C'); $this->Ln(10); //Imprime l'en-tête du tableau si nécessaire parent::Header(); } } $pdf=new PDF(); $pdf->AddPage(); // tableau $pdf->AddCol('uf',20,'UF','C'); $pdf->AddCol('service',30,'Service'); $pdf->AddCol('sortie_stock',20,'Stock','R'); $pdf->AddCol('cartouche',50,'Cartouche'); $pdf->AddCol('date_sortie',30,'Date','R'); $prop=array('HeaderColor'=>array(255,150,100), 'color1'=>array(210,245,255), 'color2'=>array(255,255,210), 'padding'=>2); $pdf->Table('select * from servcart order by date_sortie',$prop); $pdf->Output(); ?>
Essai ce code:
et pour l'impression:
Essaye et on verra le résultat!
P/S: Au fait je me perd un peu avec $service et $v_service.
<?php session_start(); function convertionDate($dateEur){ $rsl = explode ('/',$dateEur); $rsl = array_reverse($rsl); return implode($rsl,'-'); } //gestion de la ligne selectionnée if (isset($_POST['service'])) {$v_service=$_POST['service'];} else {$v_service="";} ?> <table width="580" height="209" border="3"> <form name="rechercher" method="POST" action="index.php?idpage=3"> <tr> <td height="35" colspan="5" align="center" style="font-size:24px" >Consommation de cartouches</td> </tr> <tr> <td height="32" colspan="5" align="left"> <select name="service" > <option> Choisissez un service</option> <?php $requete = "SELECT DISTINCT service FROM servcart order by service"; $req = mysql_query($requete) or die( mysql_error() ) ; while ($donnees=mysql_fetch_array($req)) { $service = $donnees['service']; ?> <!-- affichage de la liste déroulante --> <option value="<?php echo $service ;?>" <?php if ($service == $v_service) { echo 'Selected' ; } ?> ><?php echo $service;?></option> <?php } ?> </select> </td> </tr> <tr> <td height="30" colspan="5" align="center"> <label>Entre : </label> <input type="text" id="datepicker" readonly name="date_debut" /> <label>Et : </label> <input type="text" id="datepicker1" readonly name="date_fin" /> </td> </tr> <tr> <th height="28" colspan="5" scope="row" align="center"> <input type="submit" value="Rechercher" /> </th> </tr> <tr> <th width="52" height="36" bgcolor="#5ab9d8" scope="col">UF</th> <th width="159" bgcolor="#5ab9d8" scope="col">SERVICE</th> <th width="191" bgcolor="#5ab9d8" scope="col">CARTOUCHE</th> <th width="77" bgcolor="#5ab9d8" scope="col">DATE</th> <th width="63" bgcolor="#5ab9d8" scope="col">SORTIE STOCK</th> </tr> <?php if (isset($_POST['date_debut'])and isset($_POST['date_fin'])and isset($_POST['service'])) { $v_service=$_POST['service']; $date_debut=convertionDate($_POST['date_debut']); $date_fin=convertionDate($_POST['date_fin']); $_SESSION['date1']=$_POST['date_debut']; $_SESSION['date2']=$_POST['date_fin']; $_SESSION['service']=$_POST['service]; $requete2 = "SELECT uf, service,cartouche,sortie_stock,DATE_FORMAT(date_sortie,'%d/%m/%Y') AS DateTemps FROM servcart WHERE service='$v_service' and date_sortie BETWEEN '$date_debut' and '$date_fin' order by DateTemps "; $req2 = mysql_query($requete2) or die( mysql_error() ) ; while ($donnees2=mysql_fetch_assoc($req2)) { ?> <tr> <td height="22"><?php echo $donnees2['uf']; ?></td> <td><?php echo $donnees2['service']; ?></td> <td><?php echo $donnees2['cartouche']; ?></td> <td><?php echo $donnees2['DateTemps']; ?></td> <td><?php echo $donnees2['sortie_stock']; ?></td> </tr> <?php }} ?> </form> </table> <?php /*lien permettant d'imprimer*/ echo'<a href="php/pdf.php" target="_blank"><img class="image" src="images/print.png" alt="imprimer"/></a>'; ?>
et pour l'impression:
<?php session_start(); //Connexion à la base mysql_connect('localhost','root',''); mysql_select_db('gestion_cartouche'); require('mysql_table.php'); ob_end_clean(); class PDF extends PDF_MySQL_Table { function Header() { //Titre $this->SetFont('Arial','',18); $this->Cell(0,6,'Consommation',0,1,'C'); $this->Ln(10); //Imprime l'en-tête du tableau si nécessaire parent::Header(); } } $date_debut=$_SESSION['date1']; $date_fin=$_SESSION['date2']; $service=$_SESSION['service']; $pdf=new PDF(); $pdf->AddPage(); // tableau $pdf->AddCol('uf',20,'UF','C'); $pdf->AddCol('service',30,'Service'); $pdf->AddCol('sortie_stock',20,'Stock','R'); $pdf->AddCol('cartouche',50,'Cartouche'); $pdf->AddCol('date_sortie',30,'Date','R'); $prop=array('HeaderColor'=>array(255,150,100), 'color1'=>array(210,245,255), 'color2'=>array(255,255,210), 'padding'=>2); $pdf->Table("select * from servcart where date_sortie between '$date_debut' and '$date_fin' and service='$service' order by date_sortie",$prop); $pdf->Output(); ?>
Essaye et on verra le résultat!
P/S: Au fait je me perd un peu avec $service et $v_service.