Buongiorno gente! Scrivo qui poichè ho un problema con la classe FPDF e la mia classe derivata PDF.
Posto del codice.
<?php
include_once "./salvataggio.php";
include_once "./fpdf17/fpdf.php";
class PDF extends FPDF{
public $db;
public function open(){
$this->db = new MySql();
}
public function Header(){
$this->Image('logo.jpg',10,8,75);
$this->SetFont('Arial','B',20);
$this->SetTextColor(43,134,43);
$this->Ln(5);
$this->Cell(80);
$i = $_POST['id_p'];
$Sql = "SELECT nome,indirizzo,email FROM punti WHERE id_p='$i'";
$this->db->query($Sql);
$punto = $this->db->inObject();
$this->Cell(0,4,$punto->nome,0,1,'L');
$this->SetDrawColor(43,134,43);
$this->Line(90,23,200,23);
$this->SetFont('Arial','B',10);
$this->SetTextColor(179,181,179);
$this->Ln(3);
$this->SetFont('Arial','B',9);
$this->Cell(0,5,$punto->indirizzo,0,1,'R');
$this->Cell(0,5,$punto->email,0,1,'R');
$this->Cell(0,5,'P.IVA / C.F.',0,1,'R');
$this->SetTextColor(0,0,0);
$this->Ln(5);
$this->db->clean();
}
public function FancyTable($header){
// Colors, line width and bold font
$this->SetFillColor(255,0,0);
$this->SetTextColor(255);
$this->SetDrawColor(128,0,0);
$this->SetLineWidth(.3);
$this->SetFont('Times','B');
// Header
$w = array(40, 40, 55, 25, 25);
for($i=0;$i<count($header);$i++)
$this->Cell($w[$i],4,$header[$i],1,0,'C',true);
$this->Ln();
// Color and font restoration
$this->SetFillColor(224,235,255);
$this->SetTextColor(111,207,102);
$this->SetFont('');
// Data
$id = $_POST['id_c'];
$this->db->clean();
$Sql = "SELECT nome,cognome FROM clienti WHERE id_c='$id'";
$this->db->query($Sql);
$obj = $this->db->inArray();
$doc = $_POST['doc'];
$dest = $_POST['dest'];
$fill = false;
$this->Cell($w[0],6,$obj[0],'LR',0,'L',$fill);
$this->Cell($w[1],6,$doc,'LR',0,'L',$fill);
$this->Cell($w[2],6,$dest,'LR',0,'R',$fill);
$this->Cell($w[3],6,0,'LR',0,'R',$fill);
$this->Cell($w[4],6,0,'LR',0,'R',$fill);
$this->Ln();
$fill = !$fill;
// Closing line
$this->Cell(array_sum($w),0,'','T');
}
};
$pdf = new PDF();
$pdf->open();
$pdf->Header();
// Column headings
$pdf->AddPage();
$header = array('Cliente', 'Tipo Documento', 'Luogo di Destinazione', 'Documento N', 'Del:');
$pdf->FancyTable($header);
$pdf -> Output();
?>
Mi spiego, io dovrei creare tramite un form un pdf che rappresenti al meglio una fattura.
Il problema sta che io devo interagire con un database, e purtoppo non riesco a mandare in stampa alcuni valori.
Se fate caso al codice è stata creata una funzione open al posto del costruttore, perchè se creo il costruttore non mi vede la variabile $db dicendomi che non posso chiamare il metodo query su una variabile che non è un oggetto.
Ovviando con la funzione open() riesco a vedere la variabile db solo nella funzione Header() dove stampa tutti i valori, mentre nella funzione FancyTable non riesco a far stampare il valore di $obj[0].
Ho pensato che si tratti di un problema di visibilità.
Chi è così gentile da aiutarmi a risolvere questo problema?
Grazie anticipatamente.