Jeg kan ikke rigtig få den til at generer en tables ud fra data i en mysql database, ved du hvordan man gør det?
Synes godt om
Slettet bruger
17. januar 2004 - 02:29#5
Sig noget mere om, hvad du gør, og hvor det går galt. Du må selv lave koden. Du kan jo bruge tutorial nummer 5 på fpdf-siden som grundlag. I princippet skulle det være nok at rette LoadData-funktionen, så den istedet for at hente en rå tekstfil laver er array fra din database.
Derudover er der heller ikke nogen, der KAN lave koden for dig, når vi ikke aner, hvad der er i databasen, og hvordan du vil have det præsenteret.
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");
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'); } }
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
Bare lige for at nævne det: Hvis browseren tilføjer header og footer, og man ikke ønsker det, man brugeren selv slå det fra i browseren. Det er ikke specielt brugervenligt, men det virker, og er den "reneste" løsning.
Når det ikke er brugervenligt nok plejer jeg at lave en pdf-udgave. (Foretrækkes klart frem for MS Word-filer.) Jeg plejer at bruge pdf-tingen fra R&OS, da den er implementeret 100% i PHP, og dermed ikke kræver noget som helst af serveren, ud over PHP. http://www.ros.co.nz/pdf/ (http://www.google.com/search?q=php+pdf)
Jeg lukkerher så ka vi alle dele point som tak for indsatsen, kiger på det en dag hvor der mere tid
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.