Afdrukprobleem met fpdf
www.fpdf.org . Waarom word alleen de laatste record verstuurd naar het pdf bestand ?
Dank ..
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 Dank ..
Code (php)
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
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();
?>
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();
?>
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.
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)
1
2
3
4
5
6
7
8
9
10
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++;
}
?>
$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;
hmm, ook dit werkt niet .. Alleen de laatste record komt zichtbaar in het PDF bestand..
met deze code deed ik de test :
Code (php)
1
2
3
4
5
6
7
8
9
10
11
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;
?>
while($row = mysql_fetch_array($result))
{
$knID = $row["knID"];
$voornaam = $row["voornaam"];
$achternaam = $row["achternaam"];
echo($achternaam);
}
mysql_close();exit;
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
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++;
}
?>
$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 ;).
De pdf maken moet in de while() gebeuren en niet erna, want dan heb je inderdaad alleen de laatste.