• User

    Stampare contenuto databse in pdf

    Salve a tutti,

    avrei bisogno di stampare a video i risultati del database in pdf, tipo con librerie FPDF, PDFLIB o altro...

    chi mi aiuta?

    posto il codice della pagina privata.php nellla parte dove viene stampato a video il contenuto del database

    Codice PHP:
    <?
    while ($array= mysql_fetch_array($query)) // raccogliamo il risultato della query in un array e usciamo fuori tutto il suo contenuto a video
    {
    echo "<tr><td>".$array['id']."</td><td>".$array['descrizione']."</td><td>".$array['stato']."</td></tr>";
    }
    ?>

    il problema è che non so inserire la libreria nel codice, come si fa?

    ecco qualche tutorial:

    davidonzo.com/post/519/ph...f-tramite-php/


  • Consiglio Direttivo

    Non ho mai usato quella classe, ma fpdf la trovo versatile e davvero semplice da utilizzare.
    trovi tutto quì: bububu.fpdf.org/

    Per farti un'idea già basta vedere i tutorial 😉


  • User

    Ciao Samyor...ben trovato...grazie a te sono riuscito a creare l'area riservata con database, ricordi?

    Eravamo rimasti che i risultati li stampavo a video in html o al limite con un link al pdf...ma proprio te mi avevi consigliato di stampare i risultati in pdf tramite libreria fpdf...

    mi sono andato a vedere i tuitorial, ma non ci ho capito niente, non so proprio dove inserire lo script della libreria nel mio...

    Riposto la pagina privata.php (che hai fatto insieme a me)

    [PHP]<?php
    // Includo la connessione al database
    require('config.php');
    // Se non è stata definita la variabile manda l'utente alla homepage
    if(!isset($_SESSION['login']))
    {
    header('Location: index.php');
    exit;
    }
    $id=$_SESSION['login'];
    $sql="SELECT id, descrizione, stato FROM pratiche WHERE id_user='$id'"; //l'$id lo recuperi dalla sessione 😉
    $query = @mysql_query ($sql) or die (mysql_error());
    ?>

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Area privata</title>
    </head>
    <body>
    <table width="972" border="1">
    <tr><th><div align="left">Pratica</div></th><th><div align="left">Descrizione</div></th><th><div align="left">Stato</div></th></tr>
    <?
    while ($array= mysql_fetch_array($query)) // raccogliamo il risultato della query in un array e usciamo fuori tutto il suo contenuto a video
    {
    echo "<tr><td>".$array['id']."</td><td>".$array['descrizione']."</td><td>".$array['stato']."</td></tr>";
    }
    ?>
    </table>
    <p> </p>
    <p> </p>
    <p> </p>
    <p><a href="logout.php">Logout</a><br />
    </p>
    </body>
    </html> [/PHP]

    ah, poi il link di bububu, non esiste....bò!?


  • User

    utilizza fpdf è tutto abbastanza semplice.. se guardi gli esempi all'interno del loro sito riuscirai tranquillamente.. in 1oretta di pratica la prima volta ero riuscito ad ottenere una cosa analoga alla tua.. ora riesco ad ottenere cose piu complesse ed elaborate..

    poi se proprio capisci zero.. ti aiuterò con codice..

    poi magari spiegami un po meglio cosa devi fare..


  • Consiglio Direttivo

    il link è www.fpdf.org (il bububu = www :2:


  • User

    Ciao Samyor, ho provato ad inserire il codice per richiamare la classe fpdf in alto alla pagina privata.php:

    [PHP]<?php
    require('fpdf.php'); // questo è il percorso dove risiede la classe fpdf, nn so se ho scritto bene
    $pdf_doc=new FPDF();
    $pdf_doc->AddPage();
    $pdf_doc->SetFont('Arial','B',32);
    $pdf_doc->Cell(60,20,'Ciao mondo!');
    $pdf_doc->Output();
    ?>
    <?php
    // Includo la connessione al database
    require('config.php');
    // Se non è stata definita la variabile manda l'utente alla homepage
    if(!isset($_SESSION['login']))
    {
    header('Location: index.php');
    exit;
    }
    $id=$_SESSION['login'];
    $sql="SELECT id, descrizione, stato FROM pratiche WHERE id_user='$id'"; //l'$id lo recuperi dalla sessione 😉
    $query = @mysql_query ($sql) or die (mysql_error());
    ?>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Area privata</title>
    </head>
    <body>
    <table width="972" border="1">
    <tr><th><div align="left">Pratica</div></th><th><div align="left">Descrizione</div></th><th><div align="left">Stato</div></th></tr>
    <?
    while ($array= mysql_fetch_array($query)) // raccogliamo il risultato della query in un array e usciamo fuori tutto il suo contenuto a video
    {
    echo "<tr><td>".$array['id']."</td><td>".$array['descrizione']."</td><td>".$array['stato']."</td></tr>";
    }
    ?>
    </table>
    <p> </p>
    <p> </p>
    <p> </p>
    <p><a href="logout.php">Logout</a><br />
    </p>
    </body>
    </html> [/PHP]

    il risultato dopo il login è una pagina in pdf con scritto, "ciao mondo"...come faccio a far stampare la tabella del database?
    devo inserire nella echo qualcosa?


  • Consiglio Direttivo

    Vedi se così va' 😉
    [php]<?php
    require('fpdf.php'); // questo è il percorso dove risiede la classe fpdf, nn so se ho scritto bene
    $pdf_doc=new FPDF();
    $pdf_doc->AddPage();
    $pdf_doc->SetFont('Arial','B',32);

    // Includo la connessione al database
    require('config.php');
    // Se non è stata definita la variabile manda l'utente alla homepage
    if(!isset($_SESSION['login']))
    {
    header('Location: index.php');
    exit;
    }
    $id=$_SESSION['login'];
    $sql="SELECT id, descrizione, stato FROM pratiche WHERE id_user='$id'"; //l'$id lo recuperi dalla sessione 😉
    $query = @mysql_query ($sql) or die (mysql_error());

    $pdf->Cell(20,4,'Pratica', '1',0, 'C', 1);
    $pdf->Cell(60,4,'Descrizione', '1',0, 'C', 1);
    $pdf->Cell(20,4,'Stato', '1',2, 'C', 1);
    $pdf->Ln(0);

    while ($array= mysql_fetch_array($query))
    {
    $pdf->Cell(20,4,$array['id'], '1',0, 'R', 0);
    $pdf->Cell(60,4,$array['descrizione'], '1',0, 'L', 0);
    $pdf->Cell(20,4,$array['stato'], '1',2, 'R', 0);
    $pdf->Ln(0);
    }
    $pdf_doc->Output();
    ?>[/php]


  • User

    Accidenti mi da questo errore:

    Fatal error: Call to a member function on a non-object in /membri2/ginolatino/privata.php on line 19


  • Consiglio Direttivo

    Si scusa, ho scritto in automatico $pdf-> invece devi mettere $pdf_doc->

    sostituiscili 😉


  • User

    grazie veramente, sei bravissimo!

    funziona!

    :::

    certo, l'unica cosa è che mi vengono tutte le scritte grandi, mischiate e le tabelle piccoline, che devo impostare?


  • Consiglio Direttivo

    Cell(20,4.....
    Il primo valore è la larghezza della cella il secondo invece è l'altezza 😉


  • User

    ah, grazie sam...

    ...non riesco a ridimensionare il testo...

    ...guarda non posso inserire link nel forum, però ci arrivi lo stesso....;)

    ...questo è il pdf, come mi viene fuori:

    enocfrem.altervista.org/doc.pdf


  • Consiglio Direttivo

    La riga interessata al font è questa:

    $pdf_doc->SetFont('Arial','B',32);

    Diminuisci quel 32 😄


  • User

    giusto!!!

    aspetta che provo...

    accidenti mi sono accorto che facevo delle modifiche al file ma con ws_ftp caricavo un latro file copia, adesso va meglio...

    ci sto riuscendo e vaiiii!!!

    però non riesco a mandare a capo la descrizione, accidenti...guarda:

    enocfrem.altervista.org/doc.pdf


  • Consiglio Direttivo

    uhm...non l'ho mai usato, faccio una premessa, ma credo che risolvi utilizzando multicell
    [php]$pdf_doc->MultiCell(60,4,$array['descrizione'],'1','J',0)[/php]


  • User

    Mi da questo errore:

    Parse error: syntax error, unexpected T_VARIABLE in /membri2/madeleinesirugo/privata.php on line 28

    cmq credo ci sia un comando per andare a capo


  • User

    sam, sei scomparso?

    in efftti si parla in giro per andare a capèo di multicelle, ma non rtiesco proprio a regolarle...bò?


  • Consiglio Direttivo

    Ooooopppppsss 😄
    non sono scomparso...mi era scappato il post, pardon 😉
    Premettendo sempre che non l'ho mai usata mi vien da pensare, ragionandoci, che non accetti un multicell() nel mezzo di due cell() contigue.
    Le strade che percorrerei a questo punto sono due:

    • tutt'e tre le colonne diventano multicell (ma già ti dico che secondo me o da errore o in visualizzazzione verrà fuori un porc....ehm, una cosa brutta :D), ma tentar non nuoce 😉
    • Gli usi che ho visto del multicell() sono sempre a "pagina piena" pertanto da margine sinistro a margine destro. Potresti mettere le altre due celle come "Intestazione di pratica" e sotto la descrizione (ovvero il multicell()) e non dovrebbe più darti noie. Per evidenziare la separazione dalla pratica successiva magari metti una bella linea spessa o quel che giudicherai idoneo 😉

    Attendiamo buone nuove eh 😄