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   -
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

112 réponses

fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
merci tout de même...
0
bissdebrazza Messages postés 2065 Date d'inscription   Statut Contributeur Dernière intervention   712
 
Ton problème a trouvé une solution?
0
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
bonjour,
non..
0
bissdebrazza Messages postés 2065 Date d'inscription   Statut Contributeur Dernière intervention   712
 
ok,je te monte le script
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
arthezius Messages postés 3538 Date d'inscription   Statut Membre Dernière intervention   475
 
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.
0
bissdebrazza Messages postés 2065 Date d'inscription   Statut Contributeur Dernière intervention   712
 
Essaye ce script.
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 ?
0
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
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
0
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
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é ?????
0
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
j'ai déclaré
$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
0
bissdebrazza Messages postés 2065 Date d'inscription   Statut Contributeur Dernière intervention   712
 
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
0
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
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...
0
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
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
0
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
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
0
bissdebrazza Messages postés 2065 Date d'inscription   Statut Contributeur Dernière intervention   712
 
salut!
ta sélection tu la fais comment?
0
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
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...
0
bissdebrazza Messages postés 2065 Date d'inscription   Statut Contributeur Dernière intervention   712
 
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!
0
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
d'accord et le mieux c'est quoi car je dois rendre mon rapport ce soir et il me faut cette partie....lol
0
bissdebrazza Messages postés 2065 Date d'inscription   Statut Contributeur Dernière intervention   712
 
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.
0
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
code page de recherche :

<!-- 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();
?>
 
0
bissdebrazza Messages postés 2065 Date d'inscription   Statut Contributeur Dernière intervention   712
 
Essai ce code:
<?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.
0