Как создать несколько страниц с dompdf

У меня проблемы с многомерным массивом и его значением.

То, что я ищу, из моего запроса я ищу имя учителя в массиве. И после этого я хочу создать pdf, используя dompdf. Проблема связана с циклом. Я не могу создать правильный цикл, который будет работать так, как я хочу, чтобы он работал. Мой пример запроса

$q11 = "select id from teachers order by teacher "; $r11 = mysql_query($q11) or die(mysql_error()); while($rows11 = mysql_fetch_array($r11)){ $teacher = $rows11['id']; $dompdf->"It will start working"; } 

Теперь я знаю, этот код запутан, но я хочу, чтобы он создавал dompdf для каждого учителя в одном файле PDF. Как и из запроса, он должен привлекать учителей, и для каждого учителя он должен создать страницу dompdf. В настоящее время он делает только одну страницу в соответствии с последним значением, которое имеет мой запрос.

Пожалуйста помоги. Это очень срочно.

Ваша петля работает нормально. То, как вы добавляете страницы в свой PDF-файл, вероятно, неверно. По-видимому, вы перезаписываете одну страницу снова и снова, а не добавляете новую.

РЕДАКТИРОВАТЬ

Я никогда не использовал dompdf. Быстрый взгляд на документы позволяет мне думать, что вы создаете нечто вроде HTML-разметки, которое затем преобразуется в PDF, и я понял это правильно?

Пример кода

 $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"); 

Если вы задаетесь вопросом о необычном синтаксисе $var = <<<HTML \r\nHTML , это heredoc . Удобнее использовать heredocs, когда у вас много чужой встроенного кода, у этого могут быть переменные {$varname} и вам не нужно беспокоиться о котировках. Все, что вам нужно, чтобы убедиться, что heredoc ближе HTML находится в новой строке, а не отступом.

EDIT2

Все еще не слишком уверен, какую библиотеку вы используете. Я считаю, что это расширение выглядит довольно хорошо, и это называется dompdf, как вы сказали в своем вопросе.

Ваш последний комментарий указывает, что вы до сих пор не решили вашу проблему, поэтому я решил добавить дополнительную информацию, чтобы довести вас до цели.

Отказ от ответственности: я не буду писать функциональный код, и я не буду проверять это, но следующие подсказки подтолкнут вас в правильном направлении, чтобы ваши вещи были сделаны.

dompdf может читать свойства CSS2 и CSS3 вашего входного документа.

Каждый цикл в цикле while выше одного учителя, каждый из которых получает собственную страницу в выходном документе.

Я помещал страницу в контейнер div с классом teacherPage . Вы можете заполнить этот контейнер всей информацией, которую вы хотите отобразить для учителя.

Теперь все, что нам нужно сделать, – это сообщить dompdf, что каждый teacherPage – это новая страница. Это можно сделать, используя разметку @page поставляемую с CSS3

Я добавил пустой контейнер css <style type="text/css"></style> в примерный документ выше, вот где должен выглядеть стиль страницы.

Пример CSS

 @page teacher { size: A4 portrait; margin: 2cm; } .teacherPage { page: teacher; page-break-after: always; } 

С помощью @page вы можете определить именованный teacher страницы, который может иметь свойства, действительные для всего контейнера страниц.

page-break-after: always будет начинаться новая страница после каждого контейнера

Надеюсь, это поможет, получайте удовольствие, пытаясь 🙂

По-видимому, проблем с переполнением и результатов не превышает допустимого поля листа, вы можете сделать это, чтобы отделить данные от родителя в другой таблице и поставить между ними:

 <div style="page-break-before: always;"></div>