HTML2PDF - PHP Schleife für neue Seite unterbrechen
bearbeitet von
Hallo Sophie,
zwei Dinge sind da anzumerken:
(1) Ich hatte mit $ersteSeite als booleschen Wert vorgestellt, den du ANALOG zu $len füllen solltest. Nicht identisch wie $len, und zu $i addieren musst Du es auch nicht. Es geht ausschließlich darum, dass write_page() beim ersten Durchlauf für $ersteSeite den Wert true erhält, und für die Folgedurchläufe den Wert false.
(2) Du bist auf die Schachtelung der Funktionsaufrufe hineingefallen. write_page hatte in meinem ersten Vorschlag zwei Parameter: Die Startzeilennummer und die Tabelle mit den auszugebenden Zeilen. Den zweiten Parameter habe ich mittels array_slice bestimmt.
Du hast $ersteSeite jetzt als vierten Parameter an array_slice übergeben, das versteht diese Funktion aber nicht. Ich verteile den Aufruf mal auf mehrere Zeilen, dann siehst Du es:
~~~php
// Meine Ursprungsfassung:
write_page(
$i+1,
array_slice($test_pdf_ausgabe, $i, $len)
);
// Deine erweiterte Fassung:
write_page(
$i+1,
array_slice($test_pdf_ausgabe, $i, $len, $ersteSeite)
);
// Was Du aber brauchst:
write_page(
$i+1,
array_slice($test_pdf_ausgabe, $i, $len),
$ersteSeite
);
~~~
Du musst da genau auf die Klammern achten, damit der Parameter an die richtige Funktion geht.
Und: Wenn Du es so machst, dass $ersteSeite hinten dran hängt, musst Du natürlich auch die Definition von write_page entsprechend machen. Mein Vorschlag war, $ersteSeite als ersten Parameter zu übergeben. Du wolltest ihn lieber hinten haben - ist ok - dann musst Du für die Funktion schreiben:
~~~php
function write_page($zeilennr, $zeilen, $ersteSeite) {
...
}
~~~
weil Parameter ja per Position zugeordnet werden.
Es muss also so aussehen:
~~~php
<?php
$test_pdf_ausgabe = test_pdf($mysqli);
$zeilen = count($test_pdf_ausgabe);
$i = 0;
$len = 5;
$ersteSeite = true;
while ($i < $zeilen) {
write_page($i+1, array_slice($test_pdf_ausgabe, $i, $len), $ersteSeite);
$i += $len;
$len = 15;
$ersteSeite = false;
}
?>
~~~
_Rolf_
HTML2PDF - PHP Schleife für neue Seite unterbrechen
bearbeitet von
Hallo Sophie,
zwei Dinge sind da anzumerken:
(1) Ich hatte mit $ersteSeite als booleschen Wert vorgestellt, den du ANALOG zu $len füllen solltest. Nicht identisch wie $len, und zu $i addieren musst Du es auch nicht. Es geht ausschließlich darum, dass write_page() beim ersten Durchlauf für $ersteSeite den Wert true erhält, und für die Folgedurchläufe den Wert false.
(2) Du bist auf die Schachtelung der Funktionsaufrufe hineingefallen. write_page hatte in meinem ersten Vorschlag zwei Parameter: Die Startzeilennummer und die Tabelle mit den auszugebenden Zeilen. Den zweiten Parameter habe ich mittels array_slice bestimmt.
Du hast $ersteSeite jetzt als vierten Parameter an array_slice übergeben, das versteht diese Funktion aber nicht. Ich verteile den Aufruf mal auf mehrere Zeilen, dann siehst Du es:
~~~php
// Meine Ursprungsfassung:
write_page(
$i+1,
array_slice($test_pdf_ausgabe, $i, $len)
);
// Deine erweiterte Fassung:
write_page(
$i+1,
array_slice($test_pdf_ausgabe, $i, $len, $ersteSeite)
);
// Was Du aber brauchst:
write_page(
$i+1,
array_slice($test_pdf_ausgabe, $i, $len),
$ersteSeite
);
~~~
Du musst da genau auf die Klammern achten, damit der Parameter an die richtige Funktion geht.
Und: Wenn Du es so machst, dass $ersteSeite hinten dran hängt, musst Du natürlich auch die Definition von write_page entsprechend machen. Mein Vorschlag war, $ersteSeite als ersten Parameter zu übergeben. Du wolltest ihn lieber hinten haben - ist ok - dann musst Du für die Funktion schreiben:
~~~php
function write_page($zeilennr, $zeilen, $ersteSeite) {
...
}
~~~
weil Parameter ja per Position zugeordnet werden.
Es muss also so aussehen:
<?php
$test_pdf_ausgabe = test_pdf($mysqli);
$zeilen = count($test_pdf_ausgabe);
$i = 0;
$len = 5;
$ersteSeite = true;
while ($i < $zeilen) {
write_page($i+1, array_slice($test_pdf_ausgabe, $i, $len), $ersteSeite);
$i += $len;
$len = 15;
$ersteSeite = false;
}
?>
_Rolf_