Afdrukprobleem met fpdf

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

JVB

JVB

26/08/2009 09:03:00
Quote Anchor link
Hallo, ik wil met FPDF de inhoud van de tabel "klanten" wegschrijven in een pdf-formaat. In de tabel zitten 5 records maar met onderstaande code wordt slechts alleen de laatste record afgedrukt ... De code is een ( door mij aangepaste ) voorbeeldcode die je kan vinden op www.fpdf.org . Waarom word alleen de laatste record verstuurd naar het pdf bestand ?
Dank ..


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php
require('fpdf.php');

//Connect to your database
$hostname = "localhost";
$username= "root";
$password= "my_password";
$dbid="my_database";
$link=mysql_connect($hostname, $username, $password);
mysql_select_db($dbid) or die ("Unable to connect to MySQL");

//Select the Products you want to show in your PDF file
$result=mysql_query("select knID,voornaam,achternaam from klanten Order by knID",$link);
$number_of_products = mysql_numrows($result);

//For each row, add the field to the corresponding column
while($row = mysql_fetch_array($result))
{

    $knID = $row["knID"];
    $voornaam = $row["voornaam"];
    $achternaam = $row["achternaam"];
}

mysql_close();

//Create a new PDF file
$pdf=new FPDF();
$pdf->AddPage();

//Fields Name position
$Y_Fields_Name_position = 20;
//Table position, under Fields Name
$Y_Table_Position = 26;

//First create each Field Name
//Gray color filling each Field Name box

$pdf->SetFillColor(232,232,232);
//Bold Font for Field Name
$pdf->SetFont('Arial','B',12);
$pdf->SetY($Y_Fields_Name_position);
$pdf->SetX(45);
$pdf->Cell(20,6,'knID',1,0,'L',1);
$pdf->SetX(65);
$pdf->Cell(100,6,'voornaam',1,0,'L',1);
$pdf->SetX(135);
$pdf->Cell(30,6,'achternaam',1,0,'R',1);
$pdf->Ln();

//Now show the 3 columns
$pdf->SetFont('Arial','',12);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(45);
$pdf->MultiCell(20,6,$knID,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(65);
$pdf->MultiCell(100,6,$voornaam,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(135);
$pdf->MultiCell(30,6,$achternaam,1,'R');

//Create lines (boxes) for each ROW (Product)
//If you don't use the following code, you don't create the lines separating each row

$i = 0;
$pdf->SetY($Y_Table_Position);
while ($i < $number_of_products)
{

    $pdf->SetX(45);
    $pdf->MultiCell(120,6,'',1);
    $i = $i +1;
}


$pdf->Output();
?>
 
PHP hulp

PHP hulp

19/11/2024 16:25:55
 
Jeroen van Rooij

Jeroen van Rooij

26/08/2009 09:15:00
Quote Anchor link
Dit probleem heb ik ook gehad toen ik met fpdf een automatisch factuur wilde maken, ik zal even kijken of ik kan vinden wat de oplossing was, weet het namelijk niet meer uit me hoofd.
 
Eddy E

Eddy E

26/08/2009 09:17:00
Quote Anchor link
Je overschrijft met je while steeds weer opnieuw $knID waardoor alleen de laatste overblijft (want die schrijf je niet over):

Record 1: stel $knID in
Record 2: stel $knID in, maar de oude waarde vervalt dus (record 1 is verloren)
Record 3: stel $knID in, maar de oude waarde vervalt dus (record 2 is verloren)
Record 4: stel $knID in, maar de oude waarde vervalt dus (record 3 is verloren)
Record 2356: stel $knID in, maar de oude waarde vervalt dus (record 2355 is verloren)

Uiteindelijk zie je alleen record 2356 (bijvoorbeeld).


Probeer dit eens:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$i
= 0;
while($row = mysql_fetch_array($result))
{

    $knID = $row["knID"];
    $voornaam = $row["voornaam"];
    $achternaam = $row["achternaam"];
    $i++;
}

?>


Waarom die $i ... omdat ik die onderaan, bij de onderste while ook zie staan.
$i++; is hetzelfde als $i = $i + 1;
 
JVB

JVB

26/08/2009 09:38:00
Quote Anchor link
hmm, ook dit werkt niet .. Alleen de laatste record komt zichtbaar in het PDF bestand..
 
JVB

JVB

26/08/2009 10:17:00
Quote Anchor link
Deze aanpassing lijkt mij niet echt nodig want als ik een "echo" plaats dan zie je gewoon de records op het scherm staan dus het lijkt erop dat de fout meer naar beneden zit ...

met deze code deed ik de test :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

while($row = mysql_fetch_array($result))
{

    $knID = $row["knID"];
    $voornaam = $row["voornaam"];
    $achternaam = $row["achternaam"];
   echo($achternaam);
}

mysql_close();exit;
?>
 
Eddy E

Eddy E

26/08/2009 11:21:00
Quote Anchor link
Sorry, ik was wat vergeten:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$i
= 0;
while($row = mysql_fetch_array($result))
{

    $knID = $row[$i]["knID"];
    $voornaam = $row[$i]["voornaam"];
    $achternaam = $row[$i]["achternaam"];
    $i++;
}

?>


Ik moet natuurlijk wel iets met die $i doen ;).
 
- SanThe -

- SanThe -

26/08/2009 13:07:00
Quote Anchor link
De pdf maken moet in de while() gebeuren en niet erna, want dan heb je inderdaad alleen de laatste.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.