17. januar 2004 - 10:26
#6
Det er osse den der halteer loaddata funct.
Men smider lige her hvad det er jeg gør.
Det jeg egentlig bare har gjordt er at ændre den load function, til den side der trææker dataen ude, men så kan man bare php koden i dokumentet, ville gerne ha sat dataerne pænt op
<?php
include("sider/dbconnect.php");
$data = mysql_query("SELECT * FROM film");
define('FPDF_FONTPATH','font/');
require('sider/fpdf.php');
class PDF extends FPDF
{
//Load data
function LoadData($file)
{
//Read file lines
$lines=file($file);
$data=array();
foreach($lines as $line)
$data[]=explode(';',chop($line));
return $data;
}
//Simple table
function BasicTable($header,$data)
{
//Header
foreach($header as $col)
$this->Cell(40,7,$col,1);
$this->Ln();
//Data
foreach($data as $row)
{
foreach($row as $col)
$this->Cell(40,6,$col,1);
$this->Ln();
}
}
//Better table
function ImprovedTable($header,$data)
{
//Column widths
$w=array(40,35,40,45);
//Header
for($i=0;$i<count($header);$i++)
$this->Cell($w[$i],7,$header[$i],1,0,'C');
$this->Ln();
//Data
foreach($data as $row)
{
$this->Cell($w[0],6,$row[0],'LR');
$this->Cell($w[1],6,$row[1],'LR');
$this->Cell($w[2],6,number_format($row[2]),'LR',0,'R');
$this->Cell($w[3],6,number_format($row[3]),'LR',0,'R');
$this->Ln();
}
//Closure line
$this->Cell(array_sum($w),0,'','T');
}
//Colored table
function FancyTable($header,$data)
{
//Colors, line width and bold font
$this->SetFillColor(255,0,0);
$this->SetTextColor(255);
$this->SetDrawColor(128,0,0);
$this->SetLineWidth(.3);
$this->SetFont('','B');
//Header
$w=array(40,35,40,45);
for($i=0;$i<count($header);$i++)
$this->Cell($w[$i],7,$header[$i],1,0,'C',1);
$this->Ln();
//Color and font restoration
$this->SetFillColor(224,235,255);
$this->SetTextColor(0);
$this->SetFont('');
//Data
$fill=0;
foreach($data as $row)
{
$this->Cell($w[0],6,$row[0],'LR',0,'L',$fill);
$this->Cell($w[1],6,$row[1],'LR',0,'L',$fill);
$this->Cell($w[2],6,number_format($row[2]),'LR',0,'R',$fill);
$this->Cell($w[3],6,number_format($row[3]),'LR',0,'R',$fill);
$this->Ln();
$fill=!$fill;
}
$this->Cell(array_sum($w),0,'','T');
}
}
$pdf=new PDF();
//Column titles
$header=array('Country','Capital','Area (sq km)','Pop. (thousands)');
//Data loading
$data=$pdf->LoadData('sider/print.php');
$pdf->SetFont('Arial','',14);
$pdf->AddPage();
$pdf->BasicTable($header,$data);
$pdf->AddPage();
$pdf->ImprovedTable($header,$data);
$pdf->AddPage();
$pdf->FancyTable($header,$data);
$pdf->Output();
?>
Slettet bruger
17. januar 2004 - 18:24
#8
Jeg ved stadig ikke hvilke kolonner du har, hvilke vil have udskrevet og i hvilken orden. Så kan jeg jo ikke komme med et præcist svar.
Men det er denne del du skal rette:
function LoadData($file)
{
//Read file lines
$lines=file($file);
$data=array();
foreach($lines as $line)
$data[]=explode(';',chop($line));
return $data;
}
Til noget i stil med:
function LoadData($query)
{
//Read database lines
$result=mysql_query($query);
if($result);
while($row=mysql_fetch_array){
$data[]=$row;
}
return $data;
}
Der, hvor du kalder LoadData skal du så give den en query som parameter i stedet for et filnavn. Bemærk, at hvis du bare beder om alle felter i din database, så er det også alle felter, der kommer med - og i den orden, de står i databasen. Det er altså smartere at sige nøjagtig hvilke felter, du vil have, og i hvilken rækkefølge. Noget i stil med:
SELECT titel,originaltitel,land FROM film ORDER BY titel