- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Php-mysql-pdf
-
Php-mysql-pdf
Salve, ho un problema
Devo preparare delle stampe in PDF con dati che provengono da un database Mysql.Ho utilizzato un esempio che utilizzando il modulo fpdf.php stampa il contenuto di un file di tipo testo, dove i campi sono separati da ";".
Non mi sembra una buona soluzione in quanto mi sembra strano che dal database mi devo costruire questo file di tipo txt e successivamente produrre la stampa;
Il problema è che non riesco a fare le due cose nello stesso modulo. Mi da' il seguente errore:
Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\mensa\fpdf\tutorial\stampa_citta.php:11) in c:\programmi\easyphp1-8\www\mensa\fpdf\fpdf.php on line 1022
**FPDF error: **Some data has already been output to browser, can't send PDF fileQualcuno mi può dare una mano con un esempio chiarificatore?
Grazie
Ciao
Rita
-
Senza il codice di stampa_citta.php non credo che si possa essere molto di aiuto.
Non capisco perchè occorre creare il file di testo (forse percfhe non conosco questo "modulo fpdf".
Hai provato ad utilizzare la classe R&OS ?
-
Salve ,il mio codice si sviluppa su due pagine:
la prima legge i dati dal database e costruisce il file CITTA.txt e corrisponde al codice seguente:$path ="CITTA.txt";
$idmiofile =fopen($path,"w");
$conn = mysql_connect("localhost","root","");
mysql_select_db("mensa_scolastica")or die(print(mysql_error()));$strSQL="SELECT * FROM citta order by denominazione";
$risultato = mysql_query($strSQL) or die (print(mysql_error()));
$numero_righe = mysql_num_rows($risultato);
echo("nr righe=".$numero_righe);$i=0;
while($i <$numero_righe)
{
$codice = mysql_result($risultato,$i,'id');
$denominazione = mysql_result($risultato,$i,'denominazione');
$provincia = mysql_result($risultato,$i,'provincia');
$CAP = mysql_result($risultato,$i,'CAP');
//if (($provincia == null)or($provincia =""))
// {
// $provincia =" ";
// }
// if (($CAP == null)or( $CAP =""))
//{
// $CAP =" ";
// }
$line = $codice .";" . $denominazione. ";" . $provincia . ";" .$CAP ."\r\n";
fwrite($idmiofile,$line);
$i=$i+1;
}mysql_close($conn);
?>
il secondo codice, legge il file costruito e produce la stampa:
<?php
require('../fpdf.php');
class PDF extends FPDF
{
//Load data
function LoadData($file)
{
//Read file lines
$lines=file($file);
$data=array();
foreach($lines as $line)
$data[]=explode(';',chop($line));return $data;
}
//Simple table
function BasicTable($header,$data)
{
//Header
foreach($header as $col)
$this->Cell(40,7,$col,1);
$this->Ln();
//Data
foreach($data as $row)
{
foreach($row as $col)
$this->Cell(40,6,$col,1);
$this->Ln();
}
}
//Better table
function ImprovedTable($header,$data)
{
//Column widths
$w=array(30,80,30,30);
//Header
for($i=0;$i<count($header);$i++)
$this->Cell($w*,7,$header*,1,0,'C');
$this->Ln();
//Data
foreach($data as $row)
{
$this->Cell($w[0],6,$row[0],'LR');
$this->Cell($w[1],6,$row[1],'LR');
$this->Cell($w[2],6,number_format($row[2]),'LR',0,'R');
$this->Cell($w[3],6,number_format($row[3]),'LR',0,'R');
$this->Ln();
}
//Closure line
$this->Cell(array_sum($w),0,'','T');
}
//Colored table
function FancyTable($header,$data)
{
//Colors, line width and bold font
$this->SetFillColor(255,0,0);
$this->SetTextColor(255);
$this->SetDrawColor(128,0,0);
$this->SetLineWidth(.3);
$this->SetFont('','B');
//Header
$w=array(25,80,30,30);
for($i=0;$i<count($header);$i++)
$this->Cell($w*,7,$header*,1,0,'C',1);
$this->Ln();
//Color and font restoration
$this->SetFillColor(224,235,255);
$this->SetTextColor(0);
$this->SetFont('');
//Data
$fill=0;
foreach($data as $row)
{
$this->Cell($w[0],6,$row[0],'LR',0,'R',$fill);
$this->Cell($w[1],6,$row[1],'LR',0,'L',$fill);
$this->Cell($w[2],6,$row[2],'LR',0,'L',$fill);
$this->Cell($w[3],6,$row[3],'LR',0,'L',$fill);
$this->Ln();
$fill=!$fill;
}
$this->Cell(array_sum($w),0,'','T');
}
}
$pdf=new PDF();
//Column titles
$header=array('Codice','Denominazione','Provincia','CAP');
//Data loading
$data=$pdf->LoadData('CITTA.txt');
$pdf->SetFont('Arial','',14);
$pdf->AddPage();
//$pdf->BasicTable($header,$data);
//$pdf->AddPage();
// $pdf->ImprovedTable($header,$data);
// $pdf->AddPage();
$pdf->FancyTable($header,$data);
$pdf->Output();
?>1° problema : come agganciare la prima pagina alla seconda, perchè se li metto insieme mi dà l'errore di cui vi ho parlato prima:
2° problema : come realizzare il tutto in una unica pagina.
Grazie e a presto
Rita
-
L'errore che hai esposto nel primo post è dovuto a un comando **echo **, non puoi inviare dai al browser e poi cambiare il tipo di documento da produrre
-
@Gorka said:
L'errore che hai esposto nel primo post è dovuto a un comando **echo **, non puoi inviare dai al browser e poi cambiare il tipo di documento da produrre
Era quello che cercavo