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:
<?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