Antworten auf deine Fragen:
Neues Thema erstellen

fpdf - Tabellen nebeneinander

KATERchen

Aktives Mitglied

Mit den Daten aus einer Datenbank erzeuge ich mehrere Tabellen, alle die gleiche Höhe, aber unterschiedliche Breite. Diese gebe ich dann mit Hilfe von fpdf als PDF-Datei aus. Funktioniert soweit auch super, nur werden die Tabellen wie auf einer Klopapierrolle untereinander dargestellt.
Wie kann ich erreichen, dass zwei, drei Tabellen nebeneinander dargestellt werden, bis die Seitenbreite erreicht wurde?
 

KATERchen

Aktives Mitglied

AW: fpdf - Tabellen nebeneinander

Womit erzeugst du denn jetzt die PDF?
Na mit fpdf. Oder meinst du den Code?

PHP:
foreach($date AS $datum => $tag){
    
    // Z E I T        
    $pdf->SetFillColor(220,220,220);
    $pdf->Cell(30,4,substr($tag[0], 0, 2) .' '. $datum,1,0,'L',1);
    $pdf->Ln();
    $pdf->Cell(10,4,'Zeit',1,0,'C',1);
    $ausgabe = mysql_query("SELECT zeit FROM $tb_liste WHERE datum = '$datum' ORDER BY timestamp") or die (mysql_error());
    while($row = mysql_fetch_array($ausgabe)){
        $time =  substr($row["zeit"], 0 , -3);
      $pdf->Cell(10,4,$time,1,0,'C',1); 
    }
    $pdf->Ln();

hier gibts noch ein paar ähnliche Abfragen....

$pdf->AcceptPageBreak();
}   
$pdf->Output();
 

saila

Moderatorle

AW: fpdf - Tabellen nebeneinander

Bei fpdf.de oder .com (weis gerade den Domainnamen nicht genau), findest du Extensions zu fpdf. Darunter gibt es auch eine für die Darstellung und Übernahmen von Tabellen. Seh dich mal bei den Erweiterungen um.
 

KATERchen

Aktives Mitglied

AW: fpdf - Tabellen nebeneinander

Ich bin die Seite jetzt mal durchgegangen - trotz meiner Aversion gegen miserabel gepflegte Sites - habe aber nichts passendes gefunden. Es gibt zwar Scripts, mit denen man HTML-Tabellen exportieren kann, aber letztlich mit fast dem gleichen Ergebnis wie schon bei mir, das alle Tabellen untereinander stehen.
 

KATERchen

Aktives Mitglied

AW: fpdf - Tabellen nebeneinander

Ha! Ich glaube es selbst fast nicht, aber ich habe es geschafft. Und es war gar nicht mal so schwer.
Da die Spaltenbreite meiner Tabellen immer gleich ist, kann ich vorher schon ausrechnen, wie breit eine Tabelle wird. Mit SetXY werden die Tabellen dann an die entsprechende Position gesetzt.

PHP:
<?php
include("config.php");
require('L:\testcenter\fpdf16\fpdf.php');
$pdf=new FPDF();
$pdf->AddPage('L');
$pdf->SetFont('Arial','B',8);
$pdf->SetTextColor(0);
$pdf->SetDrawColor(0,0,0);
$pdf->SetAutoPageBreak('false');


$ausgabe = mysql_query("SELECT tag, datum FROM tabelle ORDER BY timestamp") or die (mysql_error());
while($row = mysql_fetch_object($ausgabe)){
$date[$row->datum][] = $row->tag;
}    

foreach($date AS $datum => $tag){
    
    // Zählen wie viele Spalten eine Tabelle hat
    $res    = mysql_query("SELECT id FROM tabelle WHERE datum = '$datum' ORDER BY timestamp");
    $menge  = mysql_num_rows($res);
    // Berechnen wie breit die Tabelle ist + Abstand zwischen den Tabellen  
    $spalten = ($menge + 1) * 10 + 5;
    // Prüft ob das Array (weiter unten) schon geschrieben wurde. Wenn nicht, wird der Startwert gesetzt
    if(!isset($breite[0])){$breite[0] = 10; $hoehe = 10;}
    // Wird die Zeile zu lang, wird eine neue Zeile bekonnen und die Höhe wird hochgezählt
    if($breite[0] + $spalten > 280){$breite[0] = 10; $hoehe = $hoehe + 40;}
    // Ist eine Seite voll, wird eine neue begonnen und die Höhe wieder auf Standart gesetzt
    if($hoehe > 200){$hoehe = 10; $pdf->AddPage('L');}
    
    // Tabellen werden die entsprechenden Koordinaten zugewiesen
    $pdf->SetXY($breite[0], $hoehe);
    $pdf->SetFillColor(220,220,220);
    $pdf->Cell(30,4,substr($tag[0], 0, 2) .' '. $datum,1,0,'L',1);
    $pdf->Ln();
    $pdf->SetX($breite[0]);     
    $pdf->Cell(10,4,'Zeit',1,0,'C',1);
    $ausgabe = mysql_query("SELECT zeit FROM tabelle WHERE datum = '$datum' ORDER BY timestamp") or die (mysql_error());
    while($row = mysql_fetch_array($ausgabe)){
        $time =  substr($row["zeit"], 0 , -3);
      $pdf->Cell(10,4,$time,1,0,'C',1); 
    }
    $pdf->Ln();
    $pdf->Ln();
    $pdf->AcceptPageBreak();

    // Ist die Seitenbreite noch nicht erreicht, wird die Breite raufgezählt und ins Array geschrieben
    if($breite[0] + $spalten < 280){
        $aa = $breite[0] + $spalten;
        $breite = array($aa);
    }
    // Ist die Seitenbreite erreicht, fängt das Array wieder von vorn an
    else{
        $breite = array($spalten);
    }
}   
$pdf->Output();


?>
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.614
Beiträge
1.538.351
Mitglieder
67.525
Neuestes Mitglied
mgtaucher
Oben