Erreur lors de la génération de pdf avec la classe fpdf

ananias8686 Messages postés 96 Statut Membre -  
ananias8686 Messages postés 96 Statut Membre -
Bonjour à tous
J'essaie de générer un pdf avec fpdf.

J'obtiens cette erreur :
PHP Parse error:  syntax error, unexpected 'include' (T_INCLUDE), expecting function (T_FUNCTION) or const (T_CONST) in /home/site/public_html/fpdf/a/ex2.php on line 5

Fichier pdf_mc_table.php bien inclus

Mon code
<?php
require('fpdf.php');
//create new class extending fpdf class
class PDF_MC_Table extends FPDF {
include('pdf_mc_table.php');
// Connect to database
$link = mysqli_connect('localhost','test','test','test');
//make new object
$pdf = new PDF_MC_Table();
$pdf->AddPage();
$pdf->Table($link,'SELECT date,details,sender,content,amount,check_status FROM int_transfer WHERE user_id = 142 UNION SELECT date,details,sender,content,amount,check_status FROM tran_acct WHERE user_id = 142 UNION SELECT date,details,sender,content,amount,check_status FROM int_transfer_admin WHERE user_id = 142 ORDER BY date DESC');
$pdf->SetFont('Arial','',14);
$pdf->SetWidths(Array(20,40,40,30,20,40));
//set line height. This is the height of each lines, not rows.
$pdf->SetLineHeight(5);
//set alignment
$pdf->SetAligns(Array('','R','C','','',''));
//add table heading using standard cells
//set font to bold
$pdf->SetFont('Arial','B',14);
$pdf->Cell(20,5,"Date",1,0);
$pdf->Cell(40,5,"Description",1,0);
$pdf->Cell(40,5,"Beneficiary",1,0);
$pdf->Cell(30,5,"Details",1,0);
$pdf->Cell(20,5,"Amount",1,0);
$pdf->Cell(40,5,"Status",1,0);
//add a new line
$pdf->Ln();
//reset font
$pdf->SetFont('Arial','',14);
//loop the data
foreach($data as $item){
 //write data using Row() method containing array of values.
 $pdf->Row(Array(
  $item['date'],
  $item['details'],
  $item['sender'],
  $item['content'],
  $item['amount'],
  $item['check_status'],
 ));
}
$pdf->Output();
}
?>


Je ne sais pas si ma classe est bien construite
Pourriez-vous m'expliquer la démarche pour faire fonctionner mon code
Merci d'avance pour votre aide

Cordialement,
Joey

2 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 833
     
    Bonjour
    Deplace ton include avant le début de ta class ou sinon mets le dans une fonction . Mais en tout cas tu ne peux pas le laisser là..
    0
  2. ananias8686 Messages postés 96 Statut Membre
     
    Je vous remercie pour votre suggestion, J ai fais sortir l include vers le haut mais ça fais de même, apparemment la classe refuse toute mes variables
    PHP Parse error:  syntax error, unexpected '$link' (T_VARIABLE), expecting function (T_FUNCTION) or const (T_CONST) in /home/site/public_html/fpdf/a/ex2.php on line 7

    Je me demande si je dois mettre tout le corps de la classe dans une fonction puisque j ai fermer sa balise a la dernière ligne. Je vais essayer et vous faire un retour
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 833
       
      Par ce que dans une class .. il s'attend à avoir des méthodes ...

      
      class truc{
         private $variable = "toto"; // une variable pour ta class par exemple
       
        public function foo{
          // ici le code de ce que doit faire ta fonction
         echo $this->variable;  // affiche le contenu de ta variable
      
        }
      
      
      }
      
      
      0
      1. ananias8686 Messages postés 96 Statut Membre > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Voici mon nouveau code qui fonctionne parfaitement sauf que la disposition des données n est pas bien faite.
         <?php
        require('mysql_table.php');
        class PDF extends PDF_MySQL_Table
        {
        protected $ProcessingTable=false;
        protected $aCols=array();
        protected $TableX;
        protected $HeaderColor;
        protected $RowColors;
        protected $ColorIndex;
        function Header()
        {
            // Print the table header if necessary
            //if($this->ProcessingTable)
             //   $this->TableHeader();
            // Title
            $this->SetFont('Arial','',14);
            // Logo
        $this->Image('logo.png',160,15,30);
        // Saut de ligne
        $this->Ln(10);
        $this->y0 = $this->GetY();
            // Ensure table header is printed
            parent::Header();
        }
        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)
        {
            // Compute the widths of the columns
            $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;
            }
            // Compute the abscissa of the table
            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')
        {
            // Add a column to the table
            if($field==-1)
                $field=count($this->aCols);
            $this->aCols[]=array('f'=>$field,'c'=>$caption,'w'=>$width,'a'=>$align);
        }
        
        function Table($link, $query, $prop=array())
        {
            // Execute query
            $res=mysqli_query($link,$query) or die('Error: '.mysqli_error($link)."<br>Query: $query");
            // Add all columns if none was specified
            if(count($this->aCols)==0)
            {
                $nb=mysqli_num_fields($res);
                for($i=0;$i<$nb;$i++)
                    $this->AddCol();
            }
            // Retrieve column names when not specified
            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(mysqli_fetch_field_direct($res,$col['f'])->name);
                }
            }
            // Handle properties
            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']);
            // Compute column widths
            $this->CalcWidths($prop['width'],$prop['align']);
            // Print header
            $this->TableHeader();
            // Print rows
            $this->SetFont('Arial','',11);
            $this->ColorIndex=0;
            $this->ProcessingTable=true;
            while($row=mysqli_fetch_array($res))
                $this->Row($row);
            $this->ProcessingTable=false;
            $this->cMargin=$cMargin;
            $this->aCols=array();
        }
        }
        
        // Connect to database
        $link = mysqli_connect('localhost','test','test_','test');
        
        $pdf = new PDF();
        $pdf->AddPage();
        // First table: output all columns
        $pdf->Table($link,'SELECT date,details,sender,content,amount,check_status FROM int_transfer WHERE user_id = 142 UNION SELECT date,details,sender,content,amount,check_status FROM tran_acct WHERE user_id = 142 UNION SELECT date,details,sender,content,amount,check_status FROM int_transfer_admin WHERE user_id = 142 ORDER BY date DESC');
        $pdf->AddPage();
        // Second table: specify 3 columns
        $pdf->AddCol('date',25,'','C');
        $pdf->AddCol('details',20,'Type');
        $pdf->AddCol('sender',30,'Beneficiary','R'); 
        $pdf->AddCol('content',60,'Details ','C');
        $pdf->AddCol('amount',20,'Amount');
        $pdf->AddCol('check_status',30,'Status','C');
        
        $prop = array('HeaderColor'=>array(255,150,100),
                    'color1'=>array(210,245,255),
                    'color2'=>array(255,255,210),
                    'padding'=>2);
        $pdf->Table($link,'SELECT date,details,sender,content,amount,check_status FROM int_transfer WHERE user_id = 142 UNION SELECT date,details,sender,content,amount,check_status FROM tran_acct WHERE user_id = 142 UNION SELECT date,details,sender,content,amount,check_status FROM int_transfer_admin WHERE user_id = 142 ORDER BY date DESC',$prop);
        $pdf->Output();
        
        ?> 

        0
      2. ananias8686 Messages postés 96 Statut Membre > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Bonjour
        Svp Comment utiliser la méthode MultiCell pour régler la disposition des données dans mon tableau.
        0