FPDF foreach fout
Nu wil ik graag voor de klant een orderbevestiging maken in pdf formaat.
Nu heb ik het onderstaande script gebruikt en aangepast. Alleen krijg ik een foutmelding betreft de 'foreach'. Ik kom er maar niet uit wat ik fout doe. Hieronder mijn script:
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
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
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
<?php
ob_start();
if(!require('../libs/fpdf/fpdf.php')) {
echo 'FOUT';
} else {
class PDF extends FPDF
{
// Gekleurde tabel
function FancyTable($header,$date,$w)
{
//Kleuren, lijn dikte en vet lettertype
$this->SetFillColor(255,0,0);
$this->SetTextColor(255);
$this->SetDrawColor(128,0,0);
$this->SetLineWidth(.3);
$this->SetFont('','B');
//Koptekst
for($i=0;$i<count($header);$i++)
$this->Cell($w[$i],7,$header[$i],1,0,'C',1);
$this->Ln();
// Herstel van kleuren en lettertype
$this->SetFillColor(224,235,255);
$this->SetTextColor(0);
$this->SetFont('');
//Gegevens
$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], 2, ',', ' '),'LR',0,'R',$fill);
$this->Ln();
$fill=!$fill;
}
$this->Cell(array_sum($w),0,'','T');
}
}
$showklantid = 1;
$ordernr = 26;
if($showklantid) {
dbconnect();
$sql = "SELECT
a.*,
b.*
FROM
producten AS a,
bestelregel AS b
WHERE
b.Bestelnummer='" . $ordernr . "'
AND
a.ProductId=b.ProductId
";
echo $sql;
$resultaat = mysql_query($sql);
if(mysql_num_rows($resultaat) > 0) {
$nr=0;
while($rij = mysql_fetch_array($resultaat)) {
$data[$nr][0] = $rij['Naam'];
$data[$nr][1] = $rij['Aantal'];
$data[$nr][2] = $rij['Prijs'];
$prijs = $rij['Prijs']*$rij['Aantal'];
$nr++;
$totaal = $totaal + $prijs;
echo 'x';
echo $rij['Prijs'];
}
// gegevens ophalen
dbconnect();
$sql2 = "SELECT * FROM klant WHERE KlantId='" . $showklantid . "'";
$result2 = mysql_query($sql2);
$row2 = mysql_fetch_array($result2);
$voorletters = $row2['Voornaam'];
$tussenvoegsel = $row2['Tussenvoegsel'];
$achternaam = $row2['Achternaam'];
$adres = $row2['Straat'];
$pc = $row2['Postcode_cijfers'];
$plaats = $row2['Woonplaats'];
if($tussenvoegsel) {
$naam = $voorletters." ".$tussenvoegsel." ".$achternaam;
} else {
$naam = $voorletters." ".$achternaam;
}
}
$pdf=new PDF();
// Kolom titels
$header=array('Artikel','Aantal','Prijs');
// Breedtes kolommen
$table_width = array(100,30,50);
// Gegevens laden
$pdf->SetFont('Arial','',14);
$pdf->AddPage();
$pdf->Image("../img/logo.jpg", 170,15,18,11);
$pdf->Cell(40,7,$naam);
$pdf->Ln();
$pdf->Cell(40,7,$adres);
$pdf->Ln();
$pdf->Cell(40,7,"$pc $plaats");
$pdf->Ln();
$pdf->Ln();
$pdf->FancyTable($header,$data,$table_width);
$pdf->Ln();
$pdf->Cell(40,7,"Totaalprijs: ".number_format($totaal, 2, ',', ' '));
$filename = mt_rand(0,999999999) . '.pdf';
$pdf->Output('klant/' . $filename);
}
}
?>
ob_start();
if(!require('../libs/fpdf/fpdf.php')) {
echo 'FOUT';
} else {
class PDF extends FPDF
{
// Gekleurde tabel
function FancyTable($header,$date,$w)
{
//Kleuren, lijn dikte en vet lettertype
$this->SetFillColor(255,0,0);
$this->SetTextColor(255);
$this->SetDrawColor(128,0,0);
$this->SetLineWidth(.3);
$this->SetFont('','B');
//Koptekst
for($i=0;$i<count($header);$i++)
$this->Cell($w[$i],7,$header[$i],1,0,'C',1);
$this->Ln();
// Herstel van kleuren en lettertype
$this->SetFillColor(224,235,255);
$this->SetTextColor(0);
$this->SetFont('');
//Gegevens
$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], 2, ',', ' '),'LR',0,'R',$fill);
$this->Ln();
$fill=!$fill;
}
$this->Cell(array_sum($w),0,'','T');
}
}
$showklantid = 1;
$ordernr = 26;
if($showklantid) {
dbconnect();
$sql = "SELECT
a.*,
b.*
FROM
producten AS a,
bestelregel AS b
WHERE
b.Bestelnummer='" . $ordernr . "'
AND
a.ProductId=b.ProductId
";
echo $sql;
$resultaat = mysql_query($sql);
if(mysql_num_rows($resultaat) > 0) {
$nr=0;
while($rij = mysql_fetch_array($resultaat)) {
$data[$nr][0] = $rij['Naam'];
$data[$nr][1] = $rij['Aantal'];
$data[$nr][2] = $rij['Prijs'];
$prijs = $rij['Prijs']*$rij['Aantal'];
$nr++;
$totaal = $totaal + $prijs;
echo 'x';
echo $rij['Prijs'];
}
// gegevens ophalen
dbconnect();
$sql2 = "SELECT * FROM klant WHERE KlantId='" . $showklantid . "'";
$result2 = mysql_query($sql2);
$row2 = mysql_fetch_array($result2);
$voorletters = $row2['Voornaam'];
$tussenvoegsel = $row2['Tussenvoegsel'];
$achternaam = $row2['Achternaam'];
$adres = $row2['Straat'];
$pc = $row2['Postcode_cijfers'];
$plaats = $row2['Woonplaats'];
if($tussenvoegsel) {
$naam = $voorletters." ".$tussenvoegsel." ".$achternaam;
} else {
$naam = $voorletters." ".$achternaam;
}
}
$pdf=new PDF();
// Kolom titels
$header=array('Artikel','Aantal','Prijs');
// Breedtes kolommen
$table_width = array(100,30,50);
// Gegevens laden
$pdf->SetFont('Arial','',14);
$pdf->AddPage();
$pdf->Image("../img/logo.jpg", 170,15,18,11);
$pdf->Cell(40,7,$naam);
$pdf->Ln();
$pdf->Cell(40,7,$adres);
$pdf->Ln();
$pdf->Cell(40,7,"$pc $plaats");
$pdf->Ln();
$pdf->Ln();
$pdf->FancyTable($header,$data,$table_width);
$pdf->Ln();
$pdf->Cell(40,7,"Totaalprijs: ".number_format($totaal, 2, ',', ' '));
$filename = mt_rand(0,999999999) . '.pdf';
$pdf->Output('klant/' . $filename);
}
}
?>
Dit script resulteert in een pdf met daarin netjes de naam en gegevens van de klant. behalve de producten in een lijst.
De volgende foutmeldingen krijg ik terug:
Warning: Invalid argument supplied for foreach() in C:\Program Files\EasyPHP 2.0b1\www\sybonne_new\webshop\klant_pdf_orderbevestiging.php on line 39
Gewijzigd op 01/01/1970 01:00:00 door JvG G
[slotje]
(A)
@Jeroen van Gijzel: Slotjes doen we niet op topics als ze zijn opgelost. Wel zien we ook graag de oplossing in het topic terug. Dit opdat anderen er weer wat van kunnen opsteken. Dus plaats even de oplossing. Bedankt.
Zit ik goed, je maakt gebruik van :
foreach($data as $row)
Maar $data bevatte nooit informatie omdat je hier een typefout had gemaakt:
function FancyTable($header,$date,$w)
$date ipv $data