Din løkke fungerer fint. Den måde, du tilføjer sider til din PDF på, er sandsynligvis forkert. Tilsyneladende overskriver du én side igen og igen i stedet for at vedhæfte en ny.
REDIGER
Jeg har aldrig brugt dompdf. Et hurtigt kig i dokumenterne lader mig tro, at du laver noget som en HTML-markering, som derefter konverteres til PDF, fik jeg det rigtigt?
Eksempelkode
$html = <<<HTML
<html>
<head>
<style type="text/css">
/* Your document styling goes here */
</style>
</head>
<body>
HTML;
while ( $row = $dbResult->fetch_assoc() ) {
$html .= '<div class="teacherPage">'
. $row['name'] // your teacher document goes here
'</div>';
}
$html .= '</body></html>';
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("sample.pdf");
Hvis du undrer dig over den usædvanlige syntaks $var = <<<HTML \r\nHTML
, det er en heredoc . Det er bare mere behageligt at bruge heredocs, når du har en masse alien inline kode, dette kan have variabler {$varname}
og du behøver ikke bekymre dig om tilbud. Alt du behøver for at sikre dig, er, at heredoc nærmere HTML
er i en ny linje og ikke indrykket.
EDIT2
Stadig ikke så sikker på hvilket bibliotek du bruger. Jeg finder denne udvidelse ser ret godt ud, og det hedder dompdf, ligesom du sagde i dit spørgsmål.
Din seneste kommentar indikerer, at du ikke har løst dit problem indtil videre, så jeg besluttede at tilføje nogle flere oplysninger for at få dig til målet.
dompdf er i stand til at læse CSS2- og CSS3-egenskaber for dit inputdokument.
Hver cyklus i while
loop ovenfor repræsenterer én lærer, som hver af dem får sin egen side i outputdokumentet.
Jeg har lagt siden ind i en div-beholder med klassen teacherPage
. Du kan fylde denne beholder med alle de oplysninger, du ønsker at få vist for en lærer.
Nu skal vi bare fortælle dompdf hver teacherPage
er en ny side. Dette kan gøres ved hjælp af @page
markup sendt med CSS3
Jeg tilføjede en tom css-beholder <style type="text/css"></style>
til eksempeldokumentet ovenfor, det er der, sidestilen skal gå til.
Eksemplet på CSS
@page teacher {
size: A4 portrait;
margin: 2cm;
}
.teacherPage {
page: teacher;
page-break-after: always;
}
Med @page
du kan definere en navngivet side teacher
, som kan have egenskaber, der er gyldige for hele sidecontaineren.
page-break-after: always
starter en ny side efter hver container
Håber dette hjælper, god fornøjelse med at prøve :)