Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    FPDF PHP MYSQL - righe a sfondo alternato

    buongiorno
    ho cercato in giro ma non sono riuscito a trovare nulla

    ho messo in piedi nella mia rete locale un server PHP MYSQL (uso il vecchio XAMPP 5.1.1) col quale faccio girare una semplice rubrica telefonica,
    ho cominciato a trafficare con la classe FPDF con ottimi risultati per poter fornire anche vari report da stampare, ma mi sono trovato in difficoltà sul seguente punto:
    sarebbe carino poter stampare in PDF i dati del mio database MYSQL su righe con sfondo alternato, per facilitarne la lettura,
    ma non ho trovato niente del genere.
    Con la versione HTML mi basta inserire (nella WHILE) il seguente codice:
    codice:
    $result = mysql_query("SELECT * FROM $table WHERE nome_campo LIKE 'tal_dei_tali' ORDER BY id ASC",$db);
    
    include ("testata_tabella.php");
    
    $alternate = "2"; 
    while ($row = mysql_fetch_array($result)) { 
    
    include ("query.php");
    
    if ($alternate == "1") { 
    $color = "#ffffff"; 
    $alternate = "2"; 
    } 
    else { 
    $color = "#efefef"; 
    $alternate = "1"; 
    } 
    include ("tabella.php");
    }
    la variabile $color vorrei che andasse a validare un comando tipo questo
    codice:
    $pdf->SetFillColor($color);
    ma questo codice in FPDF non funziona, riesco a creare tutte le righe da stampare in tabella, ma mi rimangono sempre con sfondo bianco

    qualcuno ha qualche dritta?

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    Cattura.PNG
    io mi sono comportato così,
    Codice PHP:
    function BodyTable() {
     
    $this->Cell(0,6,' ',0,0,'L'); // Check Page Break by empty cell
     
    $this->Ln(0);

     if (
    $HeaderCntrl) {
      
    $fill false;
      
    $this->SetFillColor(178,178,178);
      ......
     }

     for(
    $i=0;$i<$ColCounter;$i++) {
      ......
      
    $this->CellFitScale($CellWidth[$i],6,$valore,'LR',0,$textalign,$fill);
     }
     
    $this->Ln();

     
    // flips from true to false and vice versa
     
    $fill =! $fill
    con questa costruzione le pagine partono sempre con la riga "bianca"
    come da esempio, la presentazione è buona,
    non ho inserito la parte iniziale del report per riservatezza dei dati contenuti

    ti conviene guardare sul sito fpdf dove puoi trovare un esempio
    Ultima modifica di marino51; 28-05-2015 a 16:09

  3. #3
    grazie della dritta, ci sono riuscito,
    alla fine era più semplice di quanto pensassi
    dapprima sono impazzito cercando di adattare dei cicli FOR e FOREACH,
    poi mi sono reso conto di avere già un comando di reiterazione, la mia WHILE, quindi ho modificato il mio codice così:
    codice:
    $w = array(25, 45, 50, 55, 25); //array per larghezza dai vari campi-colonne della tabella
    $fill = false;
        //query che ricerca tutti i numeri esclusi quelli senza reparto
        $result=mysql_query("SELECT * FROM $table WHERE reparto != '' AND numero != '' ORDER BY presidio,padiglione,reparto,piano ASC",$db);                          
         
        while($row = mysql_fetch_array($result))
         {
             $reparto = $row["reparto"];
             $presidio = $row["presidio"];
             $piano = $row["piano"];
             $mobile = $row["mobile"];
             $padiglione = $row["padiglione"];
             $ubicazione = $row["ubicazione"];
             $numero = $row["numero"];
             $email = $row["email"];
             $email2 = $row["email2"];
      
         $pdf->SetFillColor(224,235,255);
         $pdf->SetFont('Times','',10);
         $pdf->SetX(5);
         $pdf->Cell($w[0],5,$presidio,1,0,'L',$fill);
         
         $pdf->SetX(30);
         $pdf->Cell($w[1],5,$reparto,1,0,'L',$fill);
                                            
         $pdf->SetX(75);
         $pdf->Cell($w[2],5,$padiglione.'    '.$piano,1,0,'L',$fill);
         $pdf->SetX(125);
         $pdf->Cell($w[3],5,$ubicazione,1,0,'L',$fill);
         $pdf->SetX(180);
         $pdf->Cell($w[4],5,$numero,1,0,'L',$fill);
       
         $pdf->Ln(); 
         $fill = !$fill;
    }

    e tutto è andato per il meglio!
    il mio PDF viene stampato esattamente come vorrei, prima riga di record, bianca, poi tutte alternate con sfondo grigio.

    PERFETTO!

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.