Php+javascript+fpdf di un singolo record

di il
9 risposte

Php+javascript+fpdf di un singolo record

Salve,
Non riesco a stampare in pdf un singolo record con la libreria fpdf, qualche anima buona può aiutarmi????
non mi genera nessun errore ma quando clicco sul pulsante PDF non apre nessuna pagina
sicuramente sbaglio qualcosa nella function pdfcli.php?pdfcli_id



<?php
include_once 'connessionedbaruba.php';


if(isset($_GET['delete_id']))
{
 $sql_query="DELETE FROM rubrica WHERE id=".$_GET['delete_id'];
 mysqli_query($conn,$sql_query);
 header("Location: $_SERVER[PHP_SELF]");
}

?>

<!DOCTYPE html ><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>RUBRICA</title>
	<!-- Bootstrap -->

  </head>
	
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript">
function edt_id(id)
{
  window.location.href='edit_rubrica.php?edit_id='+id;
}
	
function view_id(id)
{
  window.location.href='view_rubrica.php?view_id='+id;
}
	
function delete_id(id)
{
 if(confirm('Sure to Delete ?'))
 {
  window.location.href='index2.php?delete_id='+id;
 }
	
function pdfcli_id(id)
{
  window.location.href='pdfcli.php?pdfcli_id='+id;
}
}

</script>
</head>
<body>
<center>

<div id="header">
 <div id="content">
    <label>LA MIA RUBRICA </label>
    </div>
</div>

<div id="body">
 <div id="content">
    <table align="center">
    <tr>
    <th colspan="5"><a href="add_rubrica.php">AGGIUNGI A RUBRICA</a></th>
    </tr>
    <th width="10%">SL NO</th>
    <th width="10%">nome</th>
   
    <th colspan="4">Actions</th>
    </tr>
    <?php
 $sql_query="SELECT * FROM rubrica";
 $result_set=mysqli_query($conn,$sql_query);
 $i=1;
 while($row=mysqli_fetch_row($result_set))
 {
  ?>
        <tr>
        <td align="center" ><?php echo $i; ?></td>
        <td align="center" > <a href="javascript:view_id('<?php echo $row[0]; ?>')"> <?php echo $row[1]; ?> </a> </td>
<!--
        <?php if($row[count($row)-1]==1) { ?>
        <td width="22%" align="center"><a href="javascript:changestatus_id('<?php echo $row[0]; ?>',0)">Deactivate</a></td>
        <?php } else { ?>
        <td width="19%" align="center"><a href="javascript:changestatus_id('<?php echo $row[0]; ?>',1)">Activate</a></td>
        <?php } 
?>
-->
  <td width="10%" align="center"><a href="javascript:edt_id('<?php echo $row[0]; ?>')">Edit</a></td>
  <td width="10%" align="center"><a href="javascript:delete_id('<?php echo $row[0]; ?>')">Delete</a></td>
  <td width="10%" align="center"><a href="javascript:pdfcli_id('<?php echo $row[0]; ?>')">Pdf</a></td>
        </tr>
        <?php
       $i++;  
 }
 ?>
    </table>
    </div>
</div>

</center>
</body>
</html>

<?php

require_once('fpdf181/fpdf.php');
ob_end_clean();
ob_start();
//Connect to your database
require_once('connessionedbaruba.php');

//Select the Products you want to show in your PDF file
$sql_query="SELECT * FROM rubrica WHERE id=".$_GET['view_id'];
$result_set=mysqli_query($conn,$sql_query);
$fetched_row=mysqli_fetch_array($result_set,MYSQLI_ASSOC);

//Initialize the 3 columns and the total
$column_nome = "";
$column_cognome = "";
$column_indirizzo = "";
$column_telefono = "";


//For each row, add the field to the corresponding column
while($row = mysqli_fetch_array($result))
{
	
    $nome = $row["nome"];
	$cognome = $row["cognome"];
    $indirizzo = $row["indirizzo"];
    $telefono = $row["telefono"];
    
	
    $column_nome = $column_nome.$nome."\n";
    $column_cognome = $column_cognome.$cognome."\n";
    $column_indirizzo = $column_indirizzo.$indirizzo."\n";
	$column_telefono = $column_telefono.$telefono."\n";

    //Sum all the Prices (TOTAL)
   
}
mysqli_close($conn);



//Create a new PDF file
$pdf=new FPDF();
$pdf->AddPage('L');

//Fields Name position
$Y_Fields_Name_position = 10;
//Table position, under Fields Name
$Y_Table_Position = 26;

//First create each Field Name
//Gray color filling each Field Name box
$pdf->SetFillColor(252,252,252);
//Bold Font for Field Name
$pdf->SetFont('Arial','B',12);
$pdf->SetY($Y_Fields_Name_position);



$pdf->SetX(35);
$pdf->Cell(40,6,'NOME',1,0,'L',1);

$pdf->SetX(75);
$pdf->Cell(50,6,'COGNOME',1,0,'L',1);

$pdf->SetX(125);
$pdf->Cell(70,6,'INDIRIZZO',1,0,'L',1);

$pdf->SetX(195);
$pdf->Cell(30,6,'TELEFONO',1,0,'L',1);
$pdf->Ln();

//Now show the 3 columns
$pdf->SetFont('Arial','',12);



$pdf->SetY($Y_Table_Position);
$pdf->SetX(35);
$pdf->MultiCell(40,6,$column_nome,1);

$pdf->SetY($Y_Table_Position);
$pdf->SetX(75);
$pdf->MultiCell(50,6,$column_cognome,1);

$pdf->SetY($Y_Table_Position);
$pdf->SetX(125);
$pdf->MultiCell(70,6,$column_indirizzo,1);

$pdf->SetY($Y_Table_Position);
$pdf->SetX(195);
$pdf->MultiCell(30,6,$column_telefono,1);

//Create lines (boxes) for each ROW (Product)
//If you don't use the following code, you don't create the lines separating each row

ob_end_clean();
$pdf->Output();

?>

9 Risposte

  • Re: Php+javascript+fpdf di un singolo record

    Ciao,
    ho dato una vista velocissima... devi utilizzare:
    
    ob_end_flush();
    $pdf->Output();
    
    Il "clean" all'inizio toglilo.

    Facendo:
    
    $pdf->Output();
    
    Ti restituisce lo streaming... se apri la pagina PHP dove esegui il codice che ti genera il PDF OK. Se esegui una chiamata ad una API con AJAX non ti funziona. (C'è anche scritto nella guida).

    Se utilizzi ajax... lo puoi caricare con un "iframe", costruendoti l' iframe in jquery e restituendo in json solo il link e l'esito positivo del completamento del PDF.

    Ciao
  • Re: Php+javascript+fpdf di un singolo record

    Ho fatto un po di pulizia e cambiato come dicevi ma mi ritrovo con 2 errori
    file index2.php
    se clicco su pdf non succede niente non mi apre nessuna pagina
    
    <?php
    include_once 'connessionedbaruba.php';
    
    
    if(isset($_GET['delete_id']))
    {
     $sql_query="DELETE FROM rubrica WHERE id=".$_GET['delete_id'];
     mysqli_query($conn,$sql_query);
     header("Location: $_SERVER[PHP_SELF]");
    }
    //if(isset($_GET['changestatus_id']))
    //{
    // $sql_query="UPDATE rubrica SET `status`='".$_GET['status']."' WHERE id=".$_GET['changestatus_id'];
    // mysqli_query($conn,$sql_query);
    // header("Location: $_SERVER[PHP_SELF]");
    //}
    ?>
    
    <!DOCTYPE html ><head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>RUBRICA</title>
    	<!-- Bootstrap -->
        
    
      </head>
    	
      
    
    
    <link rel="stylesheet" href="style.css" type="text/css" />
    <script type="text/javascript">
    function edt_id(id)
    {
      window.location.href='edit_rubrica.php?edit_id='+id;
    }
    	
    function view_id(id)
    {
      window.location.href='view_rubrica.php?view_id='+id;
    }
    	
    function delete_id(id)
    {
     if(confirm('Sure to Delete ?'))
     {
      window.location.href='index2.php?delete_id='+id;
     }
    	
    function pdfcli_id(id)
    {
      window.location.href='pdfcli.php?pdfcli_id='+id;
    }
    }
    //function changestatus_id(id,status)
    //{
    //  window.location.href='index2.php?changestatus_id='+id+'&status='+status;
    //}
    </script>
    </head>
    <body>
    <center>
    
    <div id="header">
     <div id="content">
        <label>LA MIA RUBRICA </label>
        </div>
    </div>
    
    <div id="body">
     <div id="content">
        <table align="center">
        <tr>
        <th colspan="5"><a href="add_rubrica.php">AGGIUNGI A RUBRICA</a></th>
        </tr>
        <th width="10%">SL NO</th>
        <th width="10%">nome</th>
       
        <th colspan="4">Actions</th>
        </tr>
        <?php
     $sql_query="SELECT * FROM rubrica";
     $result_set=mysqli_query($conn,$sql_query);
     $i=1;
     while($row=mysqli_fetch_row($result_set))
     {
      ?>
            <tr>
            <td align="center" ><?php echo $i; ?></td>
            <td align="center" > <a href="javascript:view_id('<?php echo $row[0]; ?>')"> <?php echo $row[1]; ?> </a> </td>
    <!--
            <?php if($row[count($row)-1]==1) { ?>
            <td width="22%" align="center"><a href="javascript:changestatus_id('<?php echo $row[0]; ?>',0)">Deactivate</a></td>
            <?php } else { ?>
            <td width="19%" align="center"><a href="javascript:changestatus_id('<?php echo $row[0]; ?>',1)">Activate</a></td>
            <?php } 
    ?>
    -->
      <td width="10%" align="center"><a href="javascript:edt_id('<?php echo $row[0]; ?>')">Edit</a></td>
      <td width="10%" align="center"><a href="javascript:delete_id('<?php echo $row[0]; ?>')">Delete</a></td>
      <td width="10%" align="center"><a href="javascript:pdfcli_id('<?php echo $row[0]; ?>')">Pdf</a></td>
            </tr>
            <?php
           $i++;  
     }
     ?>
        </table>
        </div>
    </div>
    
    </center>
    </body>
    </html>
    
    nel file pdfcli.php
    mi compare
    Fatal error: Uncaught Exception: FPDF error: Some data has already been output, can't send PDF file in /web/htdocs/www.dueb.net/home/dueb/fpdf181/fpdf.php:27 Stack trace: #0 /web/htdocs/: FPDF->Error('Some data has a...') #1 /web/htdocs/: FPDF->_checkoutput() #2 /web/htdocs/: FPDF->Output() #3 {main} thrown in /web/htdocs/www.dueb.net/home/dueb/fpdf181/fpdf.ph on line 271
    
    <?php
    ob_start();
    require_once('fpdf181/fpdf.php');
    
    
    //Connect to your database
    require_once('connessionedbaruba.php');
    
    //Select the Products you want to show in your PDF file
    $sql_query="SELECT * FROM rubrica WHERE id=".$_GET['edit_id'];
     
    
    //Initialize the 3 columns 
    $column_nome = "";
    $column_cognome = "";
    $column_indirizzo = "";
    $column_telefono = "";
    
    
    //For each row, add the field to the corresponding column
    //while($row = mysqli_fetch_array($result))
    //{
    //	
    //    $nome = $row["nome"];
    //	$cognome = $row["cognome"];
    //    $indirizzo = $row["indirizzo"];
    //    $telefono = $row["telefono"];
        
    	
        $column_nome = $column_nome.$nome."\n";
        $column_cognome = $column_cognome.$cognome."\n";
        $column_indirizzo = $column_indirizzo.$indirizzo."\n";
    	$column_telefono = $column_telefono.$telefono."\n";
    
        
       
    //}
    mysqli_close($conn);
    
    
    
    //Create a new PDF file
    $pdf=new FPDF();
    $pdf->AddPage('L');
    
    //Fields Name position
    $Y_Fields_Name_position = 10;
    //Table position, under Fields Name
    $Y_Table_Position = 26;
    
    //First create each Field Name
    //Gray color filling each Field Name box
    $pdf->SetFillColor(252,252,252);
    //Bold Font for Field Name
    $pdf->SetFont('Arial','B',12);
    $pdf->SetY($Y_Fields_Name_position);
    
    
    
    $pdf->SetX(35);
    $pdf->Cell(40,6,'NOME',1,0,'L',1);
    
    $pdf->SetX(75);
    $pdf->Cell(50,6,'COGNOME',1,0,'L',1);
    
    $pdf->SetX(125);
    $pdf->Cell(70,6,'INDIRIZZO',1,0,'L',1);
    
    $pdf->SetX(195);
    $pdf->Cell(30,6,'TELEFONO',1,0,'L',1);
    $pdf->Ln();
    
    //Now show the 3 columns
    $pdf->SetFont('Arial','',12);
    
    
    
    $pdf->SetY($Y_Table_Position);
    $pdf->SetX(35);
    $pdf->MultiCell(40,6,$column_nome,1);
    
    $pdf->SetY($Y_Table_Position);
    $pdf->SetX(75);
    $pdf->MultiCell(50,6,$column_cognome,1);
    
    $pdf->SetY($Y_Table_Position);
    $pdf->SetX(125);
    $pdf->MultiCell(70,6,$column_indirizzo,1);
    
    $pdf->SetY($Y_Table_Position);
    $pdf->SetX(195);
    $pdf->MultiCell(30,6,$column_telefono,1);
    
    //Create lines (boxes) for each ROW (Product)
    //If you don't use the following code, you don't create the lines separating each row
    
    ob_end_flush();
    $pdf->Output();
    
    ?>
    
  • Re: Php+javascript+fpdf di un singolo record

    Ciao,
    ma se provi a richiamare il file del pdf senza ciclare nulla... Semplicemente scrivendo "ciao a tutti".

    L'output te lo restituisce? Oppure fai un debug del php...

    Fammi capire la funzione in js per aprire una nuova scheda non ti funziona? Utilizzi un popup?

    Dammi 10 minuti... Questa libreria l'ho utilizzata 2 giorni fa... Leggendo la documentazione è andato tutto liscio...

    10 minuti che ti posto una porzione di codice... Però io utilizzo i modal. Cambia poco....

    Ciao
  • Re: Php+javascript+fpdf di un singolo record

    Il primo errore si trova in questa riga di codice se levo java e inserisco l'url normale il pulsante funziona
    
    <td width="10%" align="center"><a href="javascript:pdfcli_id('<?php echo $row[0]; ?>')">Pdf</a></td>
    
  • Re: Php+javascript+fpdf di un singolo record

    aurelio125 ha scritto:


    Il primo errore si trova in questa riga di codice se levo java e inserisco l'url normale il pulsante funziona
    
    <td width="10%" align="center"><a href="javascript:pdfcli_id('<?php echo $row[0]; ?>')">Pdf</a></td>
    
    Così non si fanno le chiamate js.
    Se fai così inserisci direttamente il link del file php e aggiungi un target="_blank" così ti apre una nuova scheda.

    Così:
    
    <a href="path_file" target="_blank">PDF</a>
    
    Ma il file php che ti genera il pdf ti funziona?
  • Re: Php+javascript+fpdf di un singolo record

    Giusto due righe per darti una linea guida...

    PHP:
    
    require 'fpdf/fpdf.php';
    
    ob_start();
    $pdf = new FPDF();
    $pdf->AddPage();
    
    $pdf->SetFont('Times', '', 14);
    $pdf->SetXY(120, 15);
    $pdf->Cell(0, 0, "Ciao a tutti",0,1);
    
    ob_end_flush();
    $pdf->Output("", "test.pdf", false);
    
    Se inverti le ultime due righe non cambia nulla!

    Se devi cliclare e spostarti verso il basso imposti una variabile che si incrementa nell'asse delle Y. Oppure in base a come ti serve....

    Ciao
  • Re: Php+javascript+fpdf di un singolo record

    Aggiungo:

    Non sò se se avrai più di una pagina. Se ti dovesse capitare basta che fai un IF e controlli se il valore delle Y è maggiore di 270 è un numero che ho messo a memoria, può essere giusto o più alto o più basso(dipende anche da come vuoi impostare la pagina). Se si verifica aggiungi una pagina e reimposti i valori.

    Spero di essere stato chiaro....
  • Re: Php+javascript+fpdf di un singolo record

    Allora sono riuscito con il pdf a vedere tutta la lista con questo codice
    ma non riesco a vedere in pdf sono un record
    
    <?php
    
    
    require_once('fpdf181/fpdf.php');
    ob_end_clean();
    ob_start();
    //Connect to your database
    require_once('connessionedbaruba.php');
    
    //Select the Products you want to show in your PDF file
    $sql_query="SELECT nome, cognome, indirizzo, telefono FROM rubrica ORDER BY nome";
    
    // $result_set=mysqli_query($conn,$sql_query);
    // $fetched_row=mysqli_fetch_array($result_set,MYSQLI_ASSOC);
    $result= mysqli_query($conn, $sql_query);
    $number_of_products = mysqli_num_rows($result);
    //Initialize the 3 columns and the total
    $column_nome = "";
    $column_cognome = "";
    $column_indirizzo = "";
    $column_telefono = "";
    $total = 0;
    
    //For each row, add the field to the corresponding column
    while($row = mysqli_fetch_array($result))
    {
    	
        $nome = $row["nome"];
    	$cognome = $row["cognome"];
        $indirizzo = $row["indirizzo"];
        $telefono = $row["telefono"];
        
    	
        $column_nome = $column_nome.$nome."\n";
        $column_cognome = $column_cognome.$cognome."\n";
        $column_indirizzo = $column_indirizzo.$indirizzo."\n";
    	$column_telefono = $column_telefono.$telefono."\n";
    
        //Sum all the Prices (TOTAL)
       
    }
    mysqli_close($conn);
    
    
    
    //Create a new PDF file
    $pdf=new FPDF();
    $pdf->AddPage('L');
    
    //Fields Name position
    $Y_Fields_Name_position = 10;
    //Table position, under Fields Name
    $Y_Table_Position = 26;
    
    //First create each Field Name
    //Gray color filling each Field Name box
    $pdf->SetFillColor(252,252,252);
    //Bold Font for Field Name
    $pdf->SetFont('Arial','B',12);
    $pdf->SetY($Y_Fields_Name_position);
    
    
    
    $pdf->SetX(35);
    $pdf->Cell(40,6,'NOME',1,0,'L',1);
    
    $pdf->SetX(75);
    $pdf->Cell(50,6,'COGNOME',1,0,'L',1);
    
    $pdf->SetX(125);
    $pdf->Cell(70,6,'INDIRIZZO',1,0,'L',1);
    
    $pdf->SetX(195);
    $pdf->Cell(30,6,'TELEFONO',1,0,'L',1);
    $pdf->Ln();
    
    //Now show the 3 columns
    $pdf->SetFont('Arial','',12);
    
    
    $pdf->SetY($Y_Table_Position);
    $pdf->SetX(35);
    $pdf->MultiCell(40,6,$column_nome,1);
    
    $pdf->SetY($Y_Table_Position);
    $pdf->SetX(75);
    $pdf->MultiCell(50,6,$column_cognome,1);
    
    $pdf->SetY($Y_Table_Position);
    $pdf->SetX(125);
    $pdf->MultiCell(70,6,$column_indirizzo,1);
    
    $pdf->SetY($Y_Table_Position);
    $pdf->SetX(195);
    $pdf->MultiCell(30,6,$column_telefono,1);
    
    //Create lines (boxes) for each ROW (Product)
    //If you don't use the following code, you don't create the lines separating each row
    
    ob_end_clean();
    $pdf->Output();
    
    ?>
    
  • Re: Php+javascript+fpdf di un singolo record

    Ciao,
    non ho capito cosa vuoi fare...

    vuoi far vere nel file PDF un solo record?

    Ciao
Devi accedere o registrarti per scrivere nel forum
9 risposte