Versio

FPDF foreach fout

Overzicht Reageren

JvG G

JvG G

11/05/2007 18:50:00
Quote Anchor link
Ik ben bezig met een geatomatiseerde orderbevestiging van een webhop.
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)
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
<?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);
    }
}

    ?>


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
 
PHP hulp

PHP hulp

24/05/2012 17:57:33
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
JvG G

JvG G

12/05/2007 14:39:00
Quote Anchor link
al opgelost

[slotje]
 
Crispijn -

Crispijn -

12/05/2007 14:42:00
Quote Anchor link
Wat is precies je oplossing? En ik ben wel benieuwd naar de class die je gebruikt om pdfjes te maken!

(A)
 
- SanThe -

- SanThe -

12/05/2007 14:47:00
Quote Anchor link
@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.
 
Danny Roelofs

Danny Roelofs

12/05/2007 15:06:00
Quote Anchor link
@Jeroen,

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
 



Overzicht Reageren