Seu loop está funcionando bem. A maneira como você adiciona páginas ao seu PDF provavelmente está errada. Aparentemente, você está substituindo uma página repetidamente em vez de anexar uma nova.
EDITAR
Eu nunca usei dompdf. Uma rápida olhada nos documentos me permite pensar que você cria algo como uma marcação HTML que é convertida em PDF, entendi direito?
Código de exemplo
$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");
Se você se pergunta sobre a sintaxe incomum
$var = <<<HTML \r\nHTML
, isso é um heredoc . É mais confortável usar heredocs quando você tem muito código inline alienígena, isso pode ter variáveis {$varname}
e você não precisa se preocupar com cotações. Tudo que você precisa ter certeza, é que heredoc mais próximo de HTML
está em uma nova linha e não recuada. EDIT2
Ainda não tenho certeza, qual biblioteca você está usando. Encontrei esta extensão parecendo muito bom e é chamado dompdf, assim como você disse na sua pergunta.
Seu último comentário indica que você não resolveu seu problema até agora, então decidi adicionar mais algumas informações para levá-lo ao alvo.
dompdf é capaz de ler as propriedades CSS2 e CSS3 do seu documento de entrada.
Cada ciclo no
while
O loop acima representa um professor com cada um deles recebendo uma página própria no documento de saída. Coloquei a página em um contêiner div com a classe
teacherPage
. Você pode preencher este recipiente com todas as informações que deseja exibir para um professor. Agora tudo o que precisamos fazer é informar ao dompdf cada
teacherPage
é uma nova página. Isso pode ser feito usando @page
marcação enviado com CSS3
Adicionei um contêiner css vazio
<style type="text/css"></style>
para o documento de exemplo acima, é para onde deve ir o estilo da página. O exemplo de CSS
@page teacher {
size: A4 portrait;
margin: 2cm;
}
.teacherPage {
page: teacher;
page-break-after: always;
}
Com
@page
você pode definir uma página nomeada teacher
, que pode ter propriedades válidas para todo o contêiner de página. page-break-after: always
iniciará uma nova página após cada contêiner Espero ter ajudado, divirta-se tentando :)