Din slinga fungerar bra. Sättet du lägger till sidor i din PDF är förmodligen fel. Tydligen skriver du över en sida om och om igen istället för att bifoga en ny.
REDIGERA
Jag har aldrig använt dompdf. En snabb titt i dokumenten låter mig tro att du skapar något som en HTML-uppmärkning som sedan konverteras till PDF, fattade jag detta rätt?
Exempelkod
$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");
Om du undrar över den ovanliga syntaxen $var = <<<HTML \r\nHTML
, det är en heredoc . Det är bara bekvämare att använda heredocs när du har mycket främmande inline-kod, detta kan ha variabler {$varname}
och du behöver inte oroa dig för offerter. Allt du behöver för att se till är att heredoc närmare HTML
är på en ny rad och inte indragen.
EDIT2
Fortfarande inte så säker på vilket bibliotek du använder. Jag hittar det här tillägget ser ganska bra ut och heter dompdf, precis som du sa i din fråga.
Din senaste kommentar visar att du inte har löst ditt problem hittills, så jag bestämde mig för att lägga till lite mer information för att få dig till målet.
dompdf kan läsa CSS2- och CSS3-egenskaper för ditt inmatningsdokument.
Varje cykel under while
loopen ovan representerar en lärare som var och en av dem får en egen sida i utdatadokumentet.
Jag lägger in sidan i en div-behållare med klassen teacherPage
. Du kan fylla den här behållaren med all information du vill ska visas för en lärare.
Nu behöver vi bara berätta för dompdf för varje teacherPage
är en ny sida. Detta kan göras med @page
uppmärkning levereras med CSS3
Jag lade till en tom css-behållare <style type="text/css"></style>
till exempeldokumentet ovan, det är dit sidstilen ska gå till.
Exemplet på CSS
@page teacher {
size: A4 portrait;
margin: 2cm;
}
.teacherPage {
page: teacher;
page-break-after: always;
}
Med @page
du kan definiera en namngiven sida teacher
, som kan ha egenskaper som är giltiga för hela sidbehållaren.
page-break-after: always
kommer att börja en ny sida efter varje behållare
Hoppas detta hjälper, ha kul att prova :)