Avatar billede jjdk Nybegynder
01. januar 2006 - 12:50 Der er 28 kommentarer og
1 løsning

FPDF og Mysql

Hej og godt nytår alle-sammen.
Jeg er ved at blive klogere på funktioner til generering af PDF-filer. Jeg anvender FPDF (www.fpdf.org), men det er lidt svært for mig.
Jeg har nogle data liggende i en Mysql-tabel, som jeg gerne vil have med i PHP-filen, der genererer PDF-filen.

Mon der er en venlig sjæl, der vil vise mig et eksempel på, hvordan en eller flere poster fra en MySql-tabel medtages i PHP-filen.
Hvis det er muligt vil jeg blive meget glad for et konkret eksempel på hele PHP-filen.
Avatar billede jaw Nybegynder
01. januar 2006 - 13:47 #1
Godt nytår til dig også !

Her er et eksempel, som burde virke:

$pdf=new PDF();
$pdf->AddPage();
$pdf->Cell(0, 10, 'Liste over brugere:');
$pdf->Ln(10);
$query = mysql_query("SELECT navn FROM brugertabel ORDER BY id ASC");
while($row = mysql_fetch_assoc($query) {
  $pdf->Cell(0, 10, $row['navn']);
  $pdf->Ln(10);
}
$pdf->Output();
Avatar billede jaw Nybegynder
01. januar 2006 - 14:06 #2
Du skal så selvfølgelig lige connecte til databasen også - det kan du bare gøre i toppen af filen, hvor du også includer din fpdf.php.
Avatar billede jjdk Nybegynder
01. januar 2006 - 14:13 #3
Nu har jeg prøvet, men får en blank side: Jeg har skrevet følgende:
<?php
require('../fpdf.php');

$mysql_host = "localhost";
$mysql_user = "vardeborg";
$mysql_password = "xxxxx";

mysql_connect($mysql_host,$mysql_user,$mysql_password);
mysql_select_db("vardeborgdk");

$pdf=new PDF();
$pdf->AddPage();
$pdf->Cell(0, 10, 'Liste over brugere:');
$pdf->Ln(10);
$query = mysql_query("SELECT navn FROM kalender_kontrakt ORDER BY id ASC");
while($row = mysql_fetch_assoc($query) {
  $pdf->Cell(0, 10, $row['tilsyn_navn']);
  $pdf->Ln(10);
}
$pdf->Output();

mysql_close();
?>

Databasen = vardeborgdk
Tabellen = kalender_kontrakt
Feltnavn = tilsyn_navn
Avatar billede jaw Nybegynder
01. januar 2006 - 14:15 #4
Der er noget galt i dit udtræk, for du udhenter navn men bruger tilsyn_navn.
Avatar billede jjdk Nybegynder
01. januar 2006 - 14:39 #5
Så har jeg rettet denne linje:
$query = mysql_query("SELECT tilsyn_navn FROM kalender_kontrakt ORDER BY id ASC");

Men stadig blank side.
Avatar billede jaw Nybegynder
01. januar 2006 - 14:42 #6
Prøv lige at fjerne din mysql_close() - er lidt i tvivl om, hvorvidt den vil lave ballade efter $pdf->output();

Og har du et link til siden? Og så kan du også lige udkommentere dit udtræk, bare for at se om "Liste over brugere:" overhovedet kommer som det skal...
Avatar billede jjdk Nybegynder
01. januar 2006 - 14:49 #7
Jeg har fjernet "mysql_close(), men uden virkning.
Linket er: www.vardeborg.dk/test/kontrakt/sql.php
Og det kommer ikke som det skal - jeg tjekker lige og vender snart tilbage.
Avatar billede jjdk Nybegynder
01. januar 2006 - 15:02 #8
Jeg har lige prøvet med denne kode, men får stadig en blank side.
Der er kun 1 post i tabellen lige nu. Kan du se, hvad der er forkert?

<?php
mysql_connect("localhost","vardeborg","xxxx");
mysql_select_db("vardeborgdk");
$query = mysql_query("SELECT tilsyn_navn FROM kalender_kontrakt ORDER BY id ASC");
while($row = mysql_fetch_assoc($query)

print $row;

?>
Avatar billede jaw Nybegynder
01. januar 2006 - 15:04 #9
Ja, den der kan jeg godt se:

<?php
mysql_connect("localhost","vardeborg","xxxx");
mysql_select_db("vardeborgdk");
$query = mysql_query("SELECT tilsyn_navn FROM kalender_kontrakt ORDER BY id ASC");
while($row = mysql_fetch_assoc($query) {
  print $row['tilsyn_navn'];
}
?>
Avatar billede jjdk Nybegynder
01. januar 2006 - 15:14 #10
Jeg har skrevet sådan her, men stadig blank side:

<?php
mysql_connect("localhost","vardeborg","3gmue9px");
mysql_select_db("vardeborgdk");
$query = mysql_query("SELECT tilsyn_navn FROM kalender_kontrakt ORDER BY id ASC");
while($row = mysql_fetch_assoc($query) {
print $row['tilsyn_navn'];
}
?>
Avatar billede jaw Nybegynder
01. januar 2006 - 15:16 #11
Så er der en fejl et sted, som jeg ikke lige umiddelbart kan se, men prøv at smide:
ini_set('error_reporting', E_ALL);
i toppen. Og så skal du nok lige skifte dit password når vi nu engang er færdige :)
Avatar billede jjdk Nybegynder
01. januar 2006 - 15:19 #12
Hvis du vil have ulejlighed med det, har jeg smidt et skærmprint af Mysqladmin, hvor databasenavn m.m. fremgår. Det kan være, at du kan se, om jeg gør noget forkert.
Skærmbilledet ligger her: www.vardeborg.dk/test/kontrakt/mysql.jpg
Avatar billede jaw Nybegynder
01. januar 2006 - 15:26 #13
Ah, du har ikke noget id-felt. Derfor bare:
$query = mysql_query("SELECT tilsyn_navn FROM kalender_kontrakt");

Du kan med ret stor fordel smide or die(mysql_error()); på dine udtræk, hvis de ikke virker, så bør du få en ret god debug-meddelelse, som:
$query = mysql_query("SELECT tilsyn_navn FROM kalender_kontrakt ORDER BY id ASC") or die(mysql_error());
Avatar billede jjdk Nybegynder
01. januar 2006 - 15:28 #14
Ups - det var ikke så godt det med passwordet.
Den linje, du skriver, at jeg skal skrive i toppen: Skal den skrives i linje 2lige efter: <?php
Avatar billede jaw Nybegynder
01. januar 2006 - 15:29 #15
Ja, skal den nemlig. Så bør du tvinge PHP til at skrive fejlmeddelelser, som tilsyneladene er slået fra på din server. Og det er nærmest ikke til at arbejde uden, så kommer man sku ingen vejne :)
Avatar billede jjdk Nybegynder
01. januar 2006 - 15:37 #16
Så ser det sådan her ud, men stadig blank side:

<?php
ini_set('error_reporting', E_ALL);
mysql_connect("localhost","vardeborg","xxxxx");
mysql_select_db("vardeborgdk");
$query = mysql_query("SELECT tilsyn_navn FROM kalender_kontrakt") or die(mysql_error());
while($row = mysql_fetch_assoc($query) {
print $row['tilsyn_navn'];
}
?>
Avatar billede jaw Nybegynder
01. januar 2006 - 15:39 #17
Du mangler en parantes -> while($row = mysql_fetch_assoc($query)) {
Avatar billede jjdk Nybegynder
01. januar 2006 - 15:54 #18
Så lykkedes det, men det driller fortsat med fpdf-funktionerne. Nu kommer det dog en fejltekst: Jeg har skrevet følgende:

<?php
require('../fpdf.php');
mysql_connect("localhost","vardeborg","xxxxxxx");
mysql_select_db("vardeborgdk");
$pdf=new PDF();
$pdf->AddPage();
$pdf->Cell(0, 10, 'Liste over brugere:');
$pdf->Ln(10);

$query = mysql_query("SELECT tilsyn_navn FROM kalender_kontrakt") or die(mysql_error());
while($row = mysql_fetch_assoc($query)) {
  $pdf->Cell(0, 10, $row['tilsyn_navn']);
  $pdf->Ln(10);
}


$pdf->Output();

?>
Avatar billede jaw Nybegynder
01. januar 2006 - 16:00 #19
Det er fordi:
$pdf=new PDF();
skal være:
$pdf=new FPDF();

Beklager, men den hedder PDF hos mig fordi jeg har udbygget den lidt...
Avatar billede jjdk Nybegynder
01. januar 2006 - 16:07 #20
Det forstår jeg ikke, da jeg har testet med andre php-filer, hvor jeg netop skriver $pdf=new PDF(). De virker da udmærket.
Men jeg har rettet som du skriver og sat en font - så nu virker det.

Lige en sidste ting:
I dit eksempel hentes en bestemt celle, som så listes.
Hvis der ikke skal listen, fordi der kun er 1 post i tabellen, kan "kaldet" til tabel-cellen være noget mere simpelt. Vil du give et eksempel på dette?
Avatar billede jjdk Nybegynder
01. januar 2006 - 16:38 #21
Nu kan jeg godt se, at der skal skrives $pdf=new FPDF().
Hvis du har nemt ved at vise "kaldet" til 1 celle (tilsyn_navn) i MYSQL, så vil jeg da gerne det.
Under alle omstændigheder vil jeg gerne om du vil sende et svar, så jeg kan give de velfortjente point.
Der kommer nok flere spørgsmål, men så stiller jeg dem som nye spørgsmål.'
Mange tak for hjælpen.
Avatar billede jaw Nybegynder
01. januar 2006 - 16:59 #22
Ja, der er en nemmere måde, dette burde virke:

$pdf->Cell(0,10, mysql_result(mysql_query("SELECT feltnavn FROM tabel"), 0));
Avatar billede jaw Nybegynder
01. januar 2006 - 16:59 #23
Og det skulle jo egentlig have været et svar - selv tak :)
Avatar billede jjdk Nybegynder
01. januar 2006 - 20:02 #24
Hej Jaw.
Du ligger vel ikke inde med Verdana-fonten til FPDF-systemet. Jeg har problemer med at generere fonten.
Jeg giver gerne point. Hvis du har den kan jeg vel oprette i spørgsmål i PHP-området, og der angive min email-adresse.
Avatar billede jaw Nybegynder
01. januar 2006 - 20:05 #25
Det har jeg da:
www.tele2gaming.dk/jaw/verdana.ph_  <- skal omdøbes til .php
www.tele2gaming.dk/jaw/verdana.z

Er det ikke de 2 du skal bruge?
Avatar billede jjdk Nybegynder
01. januar 2006 - 20:37 #26
Jo - men kan det passe, er Verdana Bold ikke er med i disse 2 filer.
Jeg skriver lige et nyt spørgsmål, så jeg kan give point: Hvis ud så vil svare dette spørgsmål. Mange tak.
Avatar billede jaw Nybegynder
01. januar 2006 - 20:39 #27
Ja, det er den ikke, jeg har ikke lige bold-versionen.
Avatar billede jjdk Nybegynder
01. januar 2006 - 22:10 #28
hej igen.
Vil du lige hjælpe mig med dette spørgsmål også. Jeg har skrevet det som et særskilt spørgsmål, så du kan få nogle point:
Du gav mig en kode linje ovenfor:
$pdf->Cell(0,10, mysql_result(mysql_query("SELECT feltnavn FROM tabel"), 0));
Det fungerer fint.
Hvis jeg nu i samme linje, skal vise indholdet af 2 celler fra MySql - eksempelvis 2 telefonnumre adskilt med teksten "og" (feltnavn1 og feltnavn2), kan du hjælpe med kodelinjen her:
Avatar billede jaw Nybegynder
01. januar 2006 - 22:15 #29
Nå, svarede på spørgsmålet før jeg så du havde skrevet her...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester