Twoja pętla działa prawidłowo. Sposób dodawania stron do pliku PDF jest prawdopodobnie błędny. Wygląda na to, że nadpisujesz jedną stronę raz za razem, zamiast dołączać nową.
EDIT
nigdy nie używałem dompdf. Szybkie przejrzenie dokumentacji pozwala mi sądzić, że tworzysz coś w rodzaju znaczników HTML, które są następnie konwertowane na format PDF. Czy to prawda?
Przykład kodu
$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");
Jeśli zastanawiasz się o nietypowej składni $var = <<<HTML \r\nHTML
, że to heredoc. Bardziej wygodne jest używanie heredoc, gdy masz dużo obcy kod inline, może to mieć zmienne {$varname}
i nie musisz się martwić o cytaty. Wszystko, co musisz zrobić, aby upewnić się, że jest heredoc bliżej HTML
jest w nowej linii i nie wcięte.
EDIT2
Nadal nie jestem pewien, które biblioteki używasz. Uważam, że this extension wygląda całkiem nieźle i nazywa się dompdf, tak jak powiedziałeś w swoim pytaniu.
Twój najnowszy komentarz wskazuje, że dotychczas nie rozwiązałeś problemu, więc postanowiłem dodać więcej informacji, aby dotrzeć do celu.
Zastrzeżenie: Nie będę pisać kod funkcjonalny i nie będę przetestować, ale następujące wskazówki popchnie cię w dobrym kierunku, aby dostać swoje rzeczy zrobić.
dompdf jest w stanie odczytać właściwości CSS2 i CSS3 dokumentu wejściowego.
Każdy cykl w powyższej pętli while
reprezentuje jednego nauczyciela, z którego każdy otrzymuje własną stronę w dokumencie wyjściowym.
Umieszczam stronę w pojemniku div z klasą teacherPage
. Możesz wypełnić ten kontener wszystkimi informacjami, które chcesz wyświetlić nauczycielowi.
Teraz wszystko, co musimy zrobić, to powiedzieć dompdf każdy teacherPage
to nowa strona. Można to zrobić, używając @page
znaczników Dodałem pusty kontener css <style type="text/css"></style>
do przykładowego dokumentu powyżej, to tam powinna iść stylizacja strony.
Przykład CSS
@page teacher {
size: A4 portrait;
margin: 2cm;
}
.teacherPage {
page: teacher;
page-break-after: always;
}
Z @page
można zdefiniować nazwie strony teacher
, które mogą mieć właściwości ważnych dla całej strony kontenera.
page-break-after: always
rozpocznie nową stronę po każdym pojemniku
Hope this helps, próbując bawić :)
Odradzam korzystanie z funkcji mysql_ * w celu uzyskania dostępu do bazy danych. Są stare, słabo obsługiwane i przestarzałe pod wszystkimi nazwami (ale będą przestarzałe od PHP 5.5). Sugerowałbym zamianę na bardziej nowoczesny system, taki jak mysqli lub PDO. – GordonM
Brzmi, jakby to nie był problem z wielowymiarową tablicą lub pętlą, ale z odpowiednim użyciem '$ dompdf'. –