Comment utiliser fpdf dans mon script php

Résolu/Fermé
fauve1512 Messages postés 206 Date d'inscription mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 - 26 sept. 2011 à 10:54
fauve1512 Messages postés 206 Date d'inscription mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 - 6 oct. 2011 à 17:27
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
A voir également:

112 réponses

fauve1512 Messages postés 206 Date d'inscription mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
3 oct. 2011 à 09:06
merci tout de même...
0
bissdebrazza Messages postés 2064 Date d'inscription vendredi 29 juin 2007 Statut Contributeur Dernière intervention 7 décembre 2017 713
3 oct. 2011 à 11:23
Ton problème a trouvé une solution?
0
fauve1512 Messages postés 206 Date d'inscription mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
3 oct. 2011 à 12:27
bonjour,
non..
0
bissdebrazza Messages postés 2064 Date d'inscription vendredi 29 juin 2007 Statut Contributeur Dernière intervention 7 décembre 2017 713
3 oct. 2011 à 12:29
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 jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 477
3 oct. 2011 à 12:42
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 2064 Date d'inscription vendredi 29 juin 2007 Statut Contributeur Dernière intervention 7 décembre 2017 713
3 oct. 2011 à 12:50
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 mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
Modifié par fauve1512 le 3/10/2011 à 14:11
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 mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
3 oct. 2011 à 14:28
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 mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
3 oct. 2011 à 14:49
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 2064 Date d'inscription vendredi 29 juin 2007 Statut Contributeur Dernière intervention 7 décembre 2017 713
3 oct. 2011 à 14:54
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 mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
3 oct. 2011 à 15:05
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 mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
3 oct. 2011 à 15:20
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 mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
Modifié par fauve1512 le 4/10/2011 à 09:32
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 2064 Date d'inscription vendredi 29 juin 2007 Statut Contributeur Dernière intervention 7 décembre 2017 713
4 oct. 2011 à 09:30
salut!
ta sélection tu la fais comment?
0
fauve1512 Messages postés 206 Date d'inscription mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
4 oct. 2011 à 09:34
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 2064 Date d'inscription vendredi 29 juin 2007 Statut Contributeur Dernière intervention 7 décembre 2017 713
4 oct. 2011 à 10:02
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 mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
4 oct. 2011 à 10:08
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 2064 Date d'inscription vendredi 29 juin 2007 Statut Contributeur Dernière intervention 7 décembre 2017 713
4 oct. 2011 à 10:13
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 mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
4 oct. 2011 à 10:19
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 2064 Date d'inscription vendredi 29 juin 2007 Statut Contributeur Dernière intervention 7 décembre 2017 713
4 oct. 2011 à 10:35
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