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:


<?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
al opgelost

[slotje]
Wat is precies je oplossing? En ik ben wel benieuwd naar de class die je gebruikt om pdfjes te maken!

(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.
@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



Reageren