Il ciclo funziona correttamente. Il modo in cui aggiungi pagine al tuo PDF è probabilmente sbagliato. Apparentemente stai sovrascrivendo una pagina ancora e ancora invece di allegarne una nuova.
EDIT
ho mai usato dompdf. Un rapido sguardo ai documenti mi fa pensare che tu crei qualcosa come un codice HTML che poi viene convertito in PDF, ho capito bene?
codice di esempio
$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 vi domandate circa l'insolito sintassi $var = <<<HTML \r\nHTML
, che è un heredoc. E 'solo più comodo usare heredocs quando hai un sacco di codice inline alieno, questo può avere variabili {$varname}
e non devi preoccuparti di virgolette. Tutto quello che devi fare è assicurarti che heredoc close HTML
si trova in una nuova riga e non è rientrato.
EDIT2
Ancora non troppo sicuro, quale libreria si sta utilizzando. Trovo che lo this extension abbia un bell'aspetto e si chiama dompdf, proprio come hai detto nella tua domanda.
Il tuo ultimo commento indica che non hai risolto il problema fino a questo momento, quindi ho deciso di aggiungere ulteriori informazioni per raggiungere l'obiettivo.
Diniego: Non ho intenzione di scrivere codice funzionale e non voglio provare questo, ma i seguenti suggerimenti vi spingere nella giusta direzione per ottenere il vostro roba fatta.
dompdf è in grado di leggere le proprietà CSS2 e CSS3 del documento di input.
Ogni ciclo nel ciclo while
in alto rappresenta un insegnante in cui ognuno di essi ottiene una propria pagina nel documento di output.
Ho messo la pagina in un contenitore div con la classe teacherPage
. È possibile riempire questo contenitore con tutte le informazioni che si desidera visualizzare per un insegnante.
Ora tutto ciò che dobbiamo fare è dire a dompdf che ogni teacherPage
è una nuova pagina. Questo può essere fatto utilizzando @page
markup shipped with CSS3
ho aggiunto un contenitore vuoto css <style type="text/css"></style>
al documento esempio di cui sopra, è lì che la pagina di stile dovrebbe andare.
L'esempio CSS
@page teacher {
size: A4 portrait;
margin: 2cm;
}
.teacherPage {
page: teacher;
page-break-after: always;
}
Con @page
è possibile definire un nome pagina teacher
, che può avere proprietà valide per il contenitore di tutta la pagina.
page-break-after: always
inizierà una nuova pagina dopo ogni contenitore
Spero che questo aiuti, divertirsi cercando :)
vorrei consigliare di non usare mysql_ * funzioni per l'accesso al database. Sono vecchi, scarsamente supportati e deprecati in tutto tranne il nome (e saranno deprecati a partire da PHP 5.5). Suggerirei di passare a un sistema più moderno come mysqli o PDO. – GordonM
Sembra che non sia un problema con array o loop multidimensionali ma con l'uso corretto di '$ dompdf'. –