FPDF error output

di il
6 risposte

FPDF error output

Buongiorno,
ho un problema con la creazione di file in pdf da php. Errore mi dice:
"FPDF error: Some data has already been output, can't send PDF file"
Non riesco a trovare una soluzione valida, provo a postare il codice incriminato e vedere se qualcuno di voi può darmi un suggerimento. Un grazie anticipato a tutti.

<?php
session_start();
require('html_table.php');
include('config.php');
/* Connect to database */
if($connectDatabase == TRUE){$action=TRUE;include('connect.php');}
//percorso font
define('FPDF_FONTPATH','./font/');
//variabili
$id=$_POST['mod_id'];
$_SESSION['id'] = $id;
$ris=$_POST['mod_cons'];
$sol=$_POST['mod_datac'];
$email=$_POST['mod_mail'];
//update tabella
$pupd = "UPDATE richiesta_mat SET EVASA='$ris', DATAC='$sol' WHERE ID_RM='$id'";
mysql_query($pupd, $link) or die (mysql_error());
                echo "I Dati sono stati archiviati e aggiornati con successo nel DataBase";
//creo il pdf dal risultato della tabella                
if ($ris='Y')
{
$reg = "SELECT ID_RM,grado,nome,cognome,ufficio,email,nom_ric,marca,tipo,QNTOT,DATA,DATAC FROM personale,richiesta_mat,tipo_ric,materiali WHERE personale.ID_P=richiesta_mat.ID_PERS AND richiesta_mat.RICHIESTA=tipo_ric.ID AND tipo_ric.ID='3' AND richiesta_mat.ID_MAT=materiali.IDM AND richiesta_mat.ID_RM='$id'";
$res = mysql_query($reg) or die (mysql_error()); 
while($row=mysql_fetch_array($res)){
$pdf=new PDF();
$pdf->AddPage();
$pdf->SetFont('Arial','',12);
$html = '<head>
		<link rel="stylesheet" href="css/table.css" type="text/css"/>
                <title>Consegna Materiali</title>
        </head>
        <body> 
	<div class="CSS_Table">  
	<table><tr>		      
			<td>ID</td>
			<td>Grado</td>
			<td>Nome</td>
			<td>Cognome</td>
			<td>Ufficio</td>
			<td>Email</td>
			<td>Tipo di richiesta</td>
			<td>Marca</td>
			<td>Tipo</td>
			<td>QNT</td>
			<td>Data Richiesta</td>
			<td>Data Consegna</td>
			<tr>
			<td>' . $row['ID_RM'] .'</td>
			<td>' . $row['grado'] . '</td>
			<td>' . $row['nome'] . '</td>
			<td>' . $row['cognome'] . '</td>
			<td>' . $row['ufficio'] . '</td>
			<td>' . $row['email'] . '</td>
			<td>' . $row['nom_ric'] . '</td>
			<td>' . $row['marca'] . '</td>
			<td>' . $row['tipo'] . '</td>
			<td>' . $row['QNTOT'] . '</td>
			<td>' . $row['DATA'] . '</td>
			<td>' . $row['DATAC'] .'</td>
			</tr></table></div>';	
$pdf->WriteHTML($html);
$pdf->Output();	       
}

} 
mysql_close($link);
header("refresh:10; url=index.php");
?>

6 Risposte

  • Re: FPDF error output

    Ti suggerisco si "ridurre" il problema eliminando alcune parti (come la select sql) sostituendola con parti fisse: questo non solo porta un beneficio a chi ti vuole aiutare (perchè dovrà leggersi solo la parte incriminata, senza tanti fronzoli, e potrà eventualmente riprodurre il problema) ma ti potrebbe portare a risolvere il problema direttamente da solo!
    Comunque a me sembra che tu voglia creare un PDF per ciascuna riga
    while($row=mysql_fetch_array($res)){
    $pdf=new PDF();
    ...
    }
    
    è corretto?
  • Re: FPDF error output

    No non voglio creare un pdf per ciascuna riga.
    l'ho modificato in questo modo
    
    //creo il pdf dal risultato della tabella    
    $pdf=new PDF();
    $pdf->AddPage();
    $pdf->SetFont('Arial','',12);            
    if ($ris='Y')
    {
    $reg = "SELECT ID_RM,grado,nome,cognome,ufficio,email,nom_ric,marca,tipo,QNTOT,DATA,DATAC FROM personale,richiesta_mat,tipo_ric,materiali WHERE personale.ID_P=richiesta_mat.ID_PERS AND richiesta_mat.RICHIESTA=tipo_ric.ID AND tipo_ric.ID='3' AND richiesta_mat.ID_MAT=materiali.IDM AND richiesta_mat.ID_RM='$id'";
    $res = mysql_query($reg) or die (mysql_error()); 
    while($row=mysql_fetch_array($res)){
    $html = '<head>
    		<link rel="stylesheet" href="css/table.css" type="text/css"/>
                    <title>Consegna Materiali</title>
            </head>
            <body> 
    	<div class="CSS_Table">  
    	<table><tr>		      
    			<td>ID</td>
    			<td>Grado</td>
    			<td>Nome</td>
    			<td>Cognome</td>
    			<td>Ufficio</td>
    			<td>Email</td>
    			<td>Tipo di richiesta</td>
    			<td>Marca</td>
    			<td>Tipo</td>
    			<td>QNT</td>
    			<td>Data Richiesta</td>
    			<td>Data Consegna</td>
    			<tr>
    			<td>' . $row['ID_RM'] .'</td>
    			<td>' . $row['grado'] . '</td>
    			<td>' . $row['nome'] . '</td>
    			<td>' . $row['cognome'] . '</td>
    			<td>' . $row['ufficio'] . '</td>
    			<td>' . $row['email'] . '</td>
    			<td>' . $row['nom_ric'] . '</td>
    			<td>' . $row['marca'] . '</td>
    			<td>' . $row['tipo'] . '</td>
    			<td>' . $row['QNTOT'] . '</td>
    			<td>' . $row['DATA'] . '</td>
    			<td>' . $row['DATAC'] .'</td>
    			</tr></table></div>';		       
    }
    }
    $pdf->WriteHTML($html);
    $pdf->Output(); 
    
  • Re: FPDF error output

    while($row=mysql_fetch_array($res)){
    $html = '<head>
          <link rel="stylesheet" href="css/table.css" type="text/css"/>
                    <title>Consegna Materiali</title>
            </head>
    Sei sicuro di questo? Ma a video la tabella viene corretta?
    Comunque, ti da errori se ELIMINI la query e il while, caricando qualcosa di fisso in $html ?
  • Re: FPDF error output

    Se uso questo esempio funziona
    
    <?php
    require('html_table.php');
    
    $pdf=new PDF();
    $pdf->AddPage();
    $pdf->SetFont('Arial','',12);
    
    $html='<table border="1">
    <tr>
    <td width="200" height="30">cell 1</td><td width="200" height="30" bgcolor="#D0D0FF">cell 2</td>
    </tr>
    <tr>
    <td width="200" height="30">cell 3</td><td width="200" height="30">cell 4</td>
    </tr>
    </table>';
    
    $pdf->WriteHTML($html);
    $pdf->Output();
    ?>
    Se invecce modifico il mio in questo modo 
    [code]
    //creo il pdf dal risultato della tabella    
    $pdf=new PDF();
    $pdf->AddPage();
    $pdf->SetFont('Arial','',12);            
    if ($ris='Y')
    {
    $reg = "SELECT ID_RM,grado,nome,cognome,ufficio,email,nom_ric,marca,tipo,QNTOT,DATA,DATAC FROM personale,richiesta_mat,tipo_ric,materiali WHERE personale.ID_P=richiesta_mat.ID_PERS AND richiesta_mat.RICHIESTA=tipo_ric.ID AND tipo_ric.ID='3' AND richiesta_mat.ID_MAT=materiali.IDM AND richiesta_mat.ID_RM='$id'";
    $res = mysql_query($reg) or die (mysql_error()); 
    while($row=mysql_fetch_array($res)){
    $html = '<table><tr>		      
    			<td>ID</td>
    			<td>Grado</td>
    			<td>Nome</td>
    			<td>Cognome</td>
    			<td>Ufficio</td>
    			<td>Email</td>
    			<td>Tipo di richiesta</td>
    			<td>Marca</td>
    			<td>Tipo</td>
    			<td>QNT</td>
    			<td>Data Richiesta</td>
    			<td>Data Consegna</td>
    			<tr>
    			<td>' . $row['ID_RM'] .'</td>
    			<td>' . $row['grado'] . '</td>
    			<td>' . $row['nome'] . '</td>
    			<td>' . $row['cognome'] . '</td>
    			<td>' . $row['ufficio'] . '</td>
    			<td>' . $row['email'] . '</td>
    			<td>' . $row['nom_ric'] . '</td>
    			<td>' . $row['marca'] . '</td>
    			<td>' . $row['tipo'] . '</td>
    			<td>' . $row['QNTOT'] . '</td>
    			<td>' . $row['DATA'] . '</td>
    			<td>' . $row['DATAC'] .'</td>
    			</tr></table></div>';		       
    }
    }
    $pdf->WriteHTML($html);
    $pdf->Output(); 
    mysql_close($link);
    ?>
    
    continua a darmi errore.
  • Re: FPDF error output

    E' evidente che nel secondo caso il contenuto di $html non è valido.
    Fai un passo intermedio,magari prova a stampare un solo campo.
    E' corretto che </div> non abbia un corrispondente <div>?
  • Re: FPDF error output

    Ho risolto il problema.
    Ho dovuto separare in 2 file il primo mi fa l'aggiornamento delle tabelle il secondo mi stampa su pdf il risultato.
    In questo modo funziona e non mi dà errori.
    Grazie per i suggerimeti che mi sono stati dati.
Devi accedere o registrarti per scrivere nel forum
6 risposte