He-man 123
Grünschnabel
Guten Morgen Zusammen,
ich stelle eine Verbindung zur Datenbank und lasse mir das Ergebnis in PDF, als Tabellenform ausgeben. Das Klappt auch soweit. Jedoch ist die ausgegebene Tabelle statisch und die Einträge werden einfach über die Spaltenränder geschrieben. Könnt Ihr mir vielleicht weiterhelfen, wie ich die Tabelle anpassen, bzw. dynamisch gestalten kann?
Hier der Code:
Diese greift auf diese PHP-Datei zu:
MfG He-man 123
ich stelle eine Verbindung zur Datenbank und lasse mir das Ergebnis in PDF, als Tabellenform ausgeben. Das Klappt auch soweit. Jedoch ist die ausgegebene Tabelle statisch und die Einträge werden einfach über die Spaltenränder geschrieben. Könnt Ihr mir vielleicht weiterhelfen, wie ich die Tabelle anpassen, bzw. dynamisch gestalten kann?
Hier der Code:
PHP:
error_reporting(E_ERROR | E_PARSE);
define('FPDF_FONTPATH', 'font/');
require('mysql_table.php');
class PDF extends PDF_MySQL_Table
{
}
//Connect to database
mysql_connect('127.0.0.1', 'root');
mysql_select_db('Klausurplaner');
$pdf=new PDF();
$pdf->Open();
$pdf->AddPage();
$pdf->Table('SELECT H.lfd, K.Klasse, J.Date, F.Fach, H.Test1, H.DateTest1, H.NeedTest1, H.Klausur, H.DateKlausur, H.NeedKlausur, H.Test2, H.DateTest2, H.NeedTest2
FROM haupt as H, klasse as K, jahrgang as J, fach as F
WHERE H.Klasse = K.ID and H.Jahrgang = J.ID and H.Fach = F.ID
ORDER BY lfd;');
$pdf->Output();
Diese greift auf diese PHP-Datei zu:
PHP:
<?php
require('C:/xampp/htdocs/Klausurplaner/fpdf/fpdf.php');
class PDF_MySQL_Table extends FPDF
{
var $ProcessingTable=false;
var $aCols=array();
var $TableX;
var $HeaderColor;
var $RowColors;
var $ColorIndex;
function Header()
{
//Print the table header if necessary
if($this->ProcessingTable)
$this->TableHeader();
}
function TableHeader()
{
$this->SetFont('Arial', 'B', 12);
$this->SetX($this->TableX);
$fill=!empty($this->HeaderColor);
if($fill)
$this->SetFillColor($this->HeaderColor[0], $this->HeaderColor[1], $this->HeaderColor[2]);
foreach($this->aCols as $col)
$this->Cell($col['w'], 6, $col['c'], 1, 0, 'C', $fill);
$this->Ln();
}
function Row($data)
{
$this->SetX($this->TableX);
$ci=$this->ColorIndex;
$fill=!empty($this->RowColors[$ci]);
if($fill)
$this->SetFillColor($this->RowColors[$ci][0], $this->RowColors[$ci][1], $this->RowColors[$ci][2]);
foreach($this->aCols as $col)
$this->Cell($col['w'], 5, $data[$col['f']], 1, 0, $col['a'], $fill);
$this->Ln();
$this->ColorIndex=1-$ci;
}
function CalcWidths($width, $align)
{
//Compute the widths of the columns
$TableWidth=0;
foreach($this->aCols as $i=>$col)
{
$w=$col['w'];
if($w==-1)
$w=$width/count($this->aCols);
elseif(substr($w, -1)=='%')
$w=$w/100*$width;
$this->aCols[$i]['w']=$w;
$TableWidth+=$w;
}
//Compute the abscissa of the table
if($align=='C')
$this->TableX=max(($this->w-$TableWidth)/2, 0);
elseif($align=='R')
$this->TableX=max($this->w-$this->rMargin-$TableWidth, 0);
else
$this->TableX=$this->lMargin;
}
function AddCol($field=-1, $width=-1, $caption='', $align='L')
{
//Add a column to the table
if($field==-1)
$field=count($this->aCols);
$this->aCols[]=array('f'=>$field, 'c'=>$caption, 'w'=>$width, 'a'=>$align);
}
function Table($query, $prop=array())
{
//Issue query
$res=mysql_query($query) or die('Error: '.mysql_error()."<BR>Query: $query");
//Add all columns if none was specified
if(count($this->aCols)==0)
{
$nb=mysql_num_fields($res);
for($i=0;$i<$nb;$i++)
$this->AddCol();
}
//Retrieve column names when not specified
foreach($this->aCols as $i=>$col)
{
if($col['c']=='')
{
if(is_string($col['f']))
$this->aCols[$i]['c']=ucfirst($col['f']);
else
$this->aCols[$i]['c']=ucfirst(mysql_field_name($res, $col['f']));
}
}
//Handle properties
if(!isset($prop['width']))
$prop['width']=0;
if($prop['width']==0)
$prop['width']=$this->w-$this->lMargin-$this->rMargin;
if(!isset($prop['align']))
$prop['align']='C';
if(!isset($prop['padding']))
$prop['padding']=$this->cMargin;
$cMargin=$this->cMargin;
$this->cMargin=$prop['padding'];
if(!isset($prop['HeaderColor']))
$prop['HeaderColor']=array();
$this->HeaderColor=$prop['HeaderColor'];
if(!isset($prop['color1']))
$prop['color1']=array();
if(!isset($prop['color2']))
$prop['color2']=array();
$this->RowColors=array($prop['color1'], $prop['color2']);
//Compute column widths
$this->CalcWidths($prop['width'], $prop['align']);
//Print header
$this->TableHeader();
//Print rows
$this->SetFont('Arial', '', 11);
$this->ColorIndex=0;
$this->ProcessingTable=true;
while($row=mysql_fetch_array($res))
$this->Row($row);
$this->ProcessingTable=false;
$this->cMargin=$cMargin;
$this->aCols=array();
}
}
?>
MfG He-man 123