MySQL tabel in FPDF

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen van Rooij

Jeroen van Rooij

04/06/2009 10:24:00
Quote Anchor link
Goedemorgen,

Ik zit met een probleem, die is als volgt:

Ik ben bezig met een webshop voor een project. Nu ben ik hier al erg ver mee, alleen ik zit vast met het aanmaken van facturen/offertes.
Dit wil ik doen d.m.v. automatisch pdf's aan te maken door middel van een druk op de knop. Dit lukt nog wel, maar nu komt het probleem. Ik wil een mysql tabel in mijn pdf genereren.

Nu kunnen mensen mij verwijzen naar de fpdf site, want hier staan een aantal scripts over mysql in fpdf.
Echter is het mij niet gelukt. Als ik die scripts gebruik dan krijg ik een blanco pagina terug.

Mijn code voor de offerte:
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
<?php
session_start();
include('mysql_table.php');
include('db_connect.php');

class PDF extends PDF_MySQL_Table
{
function
Header()
{

    //Title
    $this->SetFont('Arial','',18);
    $this->Cell(0,6,'Offerte',0,1,'C');
    $this->Ln(10);
    //Ensure table header is output
    parent::Header();
}
}

$user = $_GET['user'];
$pdf=new PDF();
$pdf->AddPage();
//First table: put all columns automatically
$pdf->Table("SELECT * FROM winkelwagen LEFT JOIN productgegevens ON winkelwagen.Product = productgegevens.ProductID WHERE winkelwagen.user = '$user' AND winkelwagen.status = 'nb';");
$pdf->AddPage();
//Second table: specify 3 columns
$pdf->AddCol('rank',20,'','C');
$pdf->AddCol('name',40,'Country');
$pdf->AddCol('pop',40,'Pop (2001)','R');
$prop=array('HeaderColor'=>array(255,150,100),
            'color1'=>array(210,245,255),
            'color2'=>array(255,255,210),
            'padding'=>2);
?>


Btw: Negeer regel 24 t/m 31.

Iemand enig idee?
Gewijzigd op 01/01/1970 01:00:00 door Jeroen van Rooij
 
PHP hulp

PHP hulp

27/11/2024 08:36:32
 

04/06/2009 10:56:00
Quote Anchor link
Jeroen schreef op 04.06.2009 10:24:
Echter is het mij niet gelukt. Als ik die scripts gebruik dan krijg ik een blanco pagina terug.

Dat wijst op een fout. Zet errror reporting eens aan.
 
Jeroen van Rooij

Jeroen van Rooij

04/06/2009 11:16:00
Quote Anchor link
Als ik dat gebruik krijg ik de eerstvolgende regel na de regel waar error reporting staat meteen een parse error. Maakt niet uit waar ik error_reporting neer zet .. :S
 

04/06/2009 11:17:00
Quote Anchor link
Ja, goh, omdat je een parse error krijgt.
Bestel je bij de slager ook ... gehakt?
Geef die parse error eens.
 
Jeroen van Rooij

Jeroen van Rooij

04/06/2009 11:19:00
Quote Anchor link
Error:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Parse error: parse error in C:\wamp\www\Webshop\offerte.php on line 5

Code met error_reporting:
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
<?php

error_reporting(E_ALL)

session_start();
include('mysql_table.php');
include('db_connect.php');



class PDF extends PDF_MySQL_Table
{
function
Header()
{

    //Title
    $this->SetFont('Arial','',18);
    $this->Cell(0,6,'Offerte',0,1,'C');
    $this->Ln(10);
    //Ensure table header is output
    parent::Header();
}
}

$user = $_GET['user'];
$pdf=new PDF();
$pdf->AddPage();
//First table: put all columns automatically
$pdf->Table("SELECT * FROM winkelwagen LEFT JOIN productgegevens ON winkelwagen.Product = productgegevens.ProductID WHERE winkelwagen.user = '$user' AND winkelwagen.status = 'nb';");
$pdf->AddPage();
//Second table: specify 3 columns
$pdf->AddCol('rank',20,'','C');
$pdf->AddCol('name',40,'Country');
$pdf->AddCol('pop',40,'Pop (2001)','R');
$prop=array('HeaderColor'=>array(255,150,100),
            'color1'=>array(210,245,255),
            'color2'=>array(255,255,210),
            'padding'=>2);
            
?>
 
Roland F

Roland F

04/06/2009 11:35:00
Quote Anchor link
Syntaxfout...
error_reporting(...); (de ; dus)
 
Jeroen van Rooij

Jeroen van Rooij

04/06/2009 11:39:00
Quote Anchor link
oeps idd,

nou heb ik hem erbij gezet maar krijg ik weer blanco pagina terug..

EDIT: Heb nu een ander script gepakt en die werkt beter. Ik ben er nu mee bezig en als ik nog hulp nodig heb kom ik wel weer terug :P
Gewijzigd op 01/01/1970 01:00:00 door Jeroen van Rooij
 
Jeroen van Rooij

Jeroen van Rooij

05/06/2009 11:26:00
Quote Anchor link
Even een bumpje.

Heel het FPDF tabelletje is gelukt, echter heb ik nu nog een probleem...

Ik ben de number_format functie gaan gebruiken om mijn prijzen in de offerte netjes neer te zetten. Helaas werkt dit alleen voor de eerste regel in mijn tabel..

Dus op het moment dat ik meerdere producten in mijn offerte heb staan, toont hij alleen het bedrag van het product dat bovenaan staat, vervolgens plaatst hij de regels die onder mijn producten staan ook nog is naar boven omdat hij die ene regel waar wel de prijs berekent wordt, als laatste regel ziet.

Conclusie: number_format werkt maar voor 1 regel?

Voor mensen die geinteresseerd zijn in de code:
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
<?php

error_reporting(E_ALL);

session_start();
include('db_connect.php');
require('fpdf.php');

$user = $_GET['user'];
//Select the Products you want to show in your PDF file
$result=mysql_query("SELECT * FROM winkelwagen LEFT JOIN productgegevens ON winkelwagen.Product = productgegevens.ProductID WHERE winkelwagen.user = '$user' AND winkelwagen.status = 'nb';");
$number_of_products = mysql_numrows($result);

//Initialize the 3 columns and the total
$column_productnaam = "";
$column_prijs = "";
$column_aantal = "";
$column_subtotaal = "";
$column_totaal = "";
$totaal = 0;

$result2=mysql_query("SELECT * FROM gebruikersgegevens WHERE user = '$user';");
$number_of_products = mysql_numrows($result2);

while($row2 = mysql_fetch_array($result2))
{

    $school            = $row2["naam"];
    $adres            = $row2["adres"];
    $postcode        = $row2["postcode"];
    $plaats            = $row2["plaats"];
}

    $pcpl            = $postcode.' '.$plaats;
//For each row, add the field to the corresponding column
while($row = mysql_fetch_array($result))
{

    $naam                     = $row["productnaam"];
    $prijs                     = $row["prijs"];
    $aantal                 = $row["Aantal"];
    $subtotaal                 = $prijs * $row['Aantal'];
    $totaal                    = ($totaal)+($subtotaal);

    $column_productnaam     = $column_productnaam.$naam."\n";
    $column_aantal             = $column_aantal.$aantal."\n";
    $rond_column_prijs         = round($prijs, 2);
    $column_prijs            = number_format($rond_column_prijs, 2, ',', '.');
    $rond_column_subtotaal     = round($subtotaal, 2);
    $column_subtotaal        = number_format($rond_column_subtotaal, 2, ',', '.');
    $rond_column_totaal     = round($totaal, 2);
    $column_totaal            = number_format($rond_column_totaal, 2, ',', '.');

    //Sum all the Prices (TOTAL)
}

mysql_close();

//Berekenen BTW

    $bereken_exbtw     = $totaal / 100 * 81;
    $bereken_btw    = $totaal / 100 * 19;
    $rond_exbtw        = round($bereken_exbtw, 2);
    $rond_btw        = round($bereken_btw, 2);
    $exbtw            = number_format($rond_exbtw, 2, ',', '.');
    $btw            = number_format($rond_btw, 2, ',', '.');
    
//DATUM
    $datum=date("j M Y");
//Sleutels en Waarden voor de vervanging bepalen in een array
    $maand['Jan']="januari";
    $maand['Feb']="februari";
    $maand['Mar']="maart";
    $maand['Apr']="april";
    $maand['May']="mei";
    $maand['Jun']="juni";
    $maand['Jul']="juli";
    $maand['Aug']="augustus";
    $maand['Sep']="september";
    $maand['Oct']="oktober";
    $maand['Nov']="november";
    $maand['Dec']="december";

    foreach($maand as $k=>$v){
            $datum=str_replace($k, $v, $datum);
        }


//Nieuwe PDF pagina aanmaken
$pdf=new FPDF();
$pdf->AddPage();

//Header
$pdf->Image('images\CollegeGroepLogo.JPG',20,10,50);
$pdf->SetFont('Times','',12);
$pdf->SetX(20);
$pdf->Line(20, 30, 190, 30);

//Klantgegevens
$pdf->SetFont('Times','',12);
$pdf->SetX(20);
$pdf->Cell(0,85,$school);
$pdf->SetX(20);
$pdf->Cell(0,95,$adres);
$pdf->SetX(20);
$pdf->Cell(0,105,$pcpl);

//Bedrijfgegevens
$pdf->SetFont('Times','',9);
$pdf->SetX(150);
$pdf->Cell(0,55,'gegevens');
$pdf->SetX(150);
$pdf->Cell(0,65,'gegevens');
$pdf->SetX(150);
$pdf->Cell(0,75,'gegevens');
$pdf->SetX(150);
$pdf->Cell(0,85,'gegevens');
$pdf->SetX(150);
$pdf->Cell(0,95,'gegevens');
$pdf->SetX(150);
$pdf->Cell(0,105,'gegevens');
$pdf->SetX(150);
$pdf->Cell(0,115,'gegevens');
$pdf->SetX(150);
$pdf->Cell(0,125,'gegevens');
$pdf->SetX(150);
$pdf->Cell(0,135,'gegevens');
$pdf->SetX(150);
$pdf->Cell(0,145,'gegevens');
$pdf->SetX(150);
$pdf->Cell(0,155,'gegevens');
$pdf->SetX(150);
$pdf->Cell(0,165,'gegevens');

//Offerte
$pdf->SetFont('Times','B',13);
$pdf->SetX(20);
$pdf->Cell(0,175,'OFFERTE');
$pdf->SetFont('Times','',12);
$pdf->SetX(20);
$pdf->Cell(0,195,'Offertedatum');
$pdf->SetX(20);
$pdf->Cell(0,205,'Betreft');
$pdf->SetX(70);
$pdf->Cell(0,195,': '.$datum);
$pdf->SetX(70);
$pdf->Cell(0,205,': Betreft');

//Fields Name position
$Y_Fields_Name_position = 125;
//Table position, under Fields Name
$Y_Table_Position = 131;

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

$pdf->SetFillColor(255,255,255);
//Bold Font for Field Name
$pdf->SetFont('Times','B',12);
$pdf->SetY($Y_Fields_Name_position);
$pdf->SetX(20);
$pdf->Cell(15,6,'Aantal',0,0,'L',1);
$pdf->SetX(35);
$pdf->Cell(70,6,'Omschrijving',0,0,'L',1);
$pdf->SetX(105);
$pdf->Cell(45,6,'Prijs per eenheid',0,0,'L',1);
$pdf->SetX(150);
$pdf->Cell(30,6,'Bedrag',0,0,'R',1);
$pdf->Ln();

//Now show the 3 columns
$pdf->SetFont('Times','',12);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(20);
$pdf->MultiCell(15,6,$column_aantal,0);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(35);
$pdf->MultiCell(70,6,$column_productnaam,0);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(105);
$pdf->MultiCell(45,6,'€ '.$column_prijs,0,'L');
$pdf->SetY($Y_Table_Position);
$pdf->SetX(150);
$pdf->MultiCell(30,6,'€ '.$column_subtotaal,0,'R');
$pdf->Ln();
$pdf->SetFont('Times','B',12);
$pdf->SetX(20);
$pdf->MultiCell(120,6,'Totaal door u te betalen inclusief BTW',0,'L');
$pdf->SetX(150);
$pdf->MultiCell(30,-6,'€ '.$column_totaal,0,'R');
$pdf->SetFont('Times','',12);
$pdf->SetX(20);
$pdf->MultiCell(120,16,'BTW aandeel (19% over '.$exbtw.') bedraagt',0,'L');
$pdf->SetX(150);
$pdf->MultiCell(30,-16,'€ '.$btw,0,'R');
$pdf->SetFont('Times','',12);
$pdf->SetX(20);
$pdf->Cell(0,70,'Wij verzoeken u vriendelijk genoemd bedrag binnen 5 dagen over te maken op');
$pdf->SetX(20);
$pdf->Cell(0,80,'gegevens.');
//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(20);
    $pdf->MultiCell(130,6,'',0);
    $i = $i +1;
}


$pdf->Output();
?>
 
Jelmer -

Jelmer -

05/06/2009 12:27:00
Quote Anchor link
Jep, number_format maakt een nummer op, en niet een string (kolom) vol nummers.

Je moet number_format even verplaatsen naar $prijs = $row['prijs'], wnat daar is het nog een enkel nummer.

Als je het iedere keer over de samengevoegde kolom met prijzen haalt, vraag je number_format eigenlijk om meerdere malen z'n eigen resultaat als nummer te beschouwen en opnieuw op te maken :/
 
Jeroen van Rooij

Jeroen van Rooij

05/06/2009 12:31:00
Quote Anchor link
Maar dan krijg ik een parse error terug:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Parse error: parse error in C:\wamp\www\Webshop\offerte.php on line 37

Heb hem nu zo gedaan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$prijs
= number_format($row["prijs"];, 2, ',', '.');
?>


Ik doe iets fout?

EDIT:

Heb t opgelost:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
    $prijss
            = $row["prijs"];
    $prijs            = number_format($prijss, 2, ',', '.');
    $aantal         = $row["Aantal"];
    $subtotaall         = $prijs * $row['Aantal'];
    $subtotaal        = number_format($subtotaall, 2, ',', '.');
?>


Hartstikke bedankt voor je hulp! Kwam er echt niet meer uit!!

EDIT2:

Oké nu heb ik weer een probleem. Nu werken mijn totaal en btw bedragen niet meer.. =x

EDIT3:

Lol, oke hij werkt nu perfect, heb het opgelost, was maar klein foutje! Nogmaals bedankt!
Gewijzigd op 01/01/1970 01:00:00 door Jeroen van Rooij
 
Hipska BE

Hipska BE

05/06/2009 12:56:00
Quote Anchor link
Waarom doe je in godsnaam deze nutteloze dingen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
    $prijss
            = $row["prijs"];
    $aantal         = $row["Aantal"];
    $subtotaall         = $prijs * $row['Aantal'];
?>


Dat vraag ik mij toch echt af hoor. Die voegen niets toe.
Je kan toch gewoon $row['prijs'] gaan gebruiken????
 



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.