[GELÖST] Zahl zur nächsten 7-Reihe hochzählen


EnesE

Grünschnabel
#1
Hallo,

ich habe ein Problem welches ich nicht lösen kann bzw. nicht auf den Gedanken komme, wie ich es lösen kann.

Erstmal eine kurze Beschreibung wofür ich es brauche:

Es soll eine Liste als Tabelle ausgegeben werden.
Die Tabelle kann als DIN A4 Datei ausgedruckt bzw. abgespeichert werden.
Die Tabelle ist pro Seite 7 Zeilen lang und 7 Spalten breit also 7x7. Es passen auf jede Seite 49 Datensätze/Zellen.
Es gibt keine feste Datenanzahl womit die Tabelle gefüllt wird also sie kann variieren.
Dies klappt auch alles soweit

Nun zu meinem Problem:
Wenn die Datenanzahl nicht genau einer Zahl der 7-Reihe entspricht wird die Tabelle verzerrt und nicht korrekt wieder gegeben.
Wenn es also z.B. 52 Datensätze gibt wird alles bis zur 2. Seite korrekt angezeigt, aber auf der 2. Seite werden die 3 übrigen Zellen auf die komplette Breite langgezogen.

Ich bräuchte ein Script womit ich die Anzahl der Datensätze auf die nächste 7-Reihe hochzählen kann.
Also bei der 52 wäre die nächste Zahl die 56.

Man könnte das zwar über ein Array lösen in dem man alle Zahlen der 7-Reihe auflistet, aber da die gesamt Anzahl unbestimmt ist wäre dies bei sehr hohen Zahlen ein zu großer Aufwand.



Im Anhang ist eine Vorschau, was ich mit dem verzerren genau meine. Problem.jpg
 

ComFreek

Mod | @comfreek
Moderator
#2
Das geht wie folgt:
PHP:
$numberOfDatasets = 52; 
while ($numberOfDatasets % 7 != 0) {
  // push empty dataset
}

// Effizienter:
// hier: 7 - (52 % 7) = 7 - 3 = 4
// => wir müssen auf 52 noch 4 Datensätze hinzufügen, um zu 56 zu kommen
$trailingDatasets = $numberOfDatasets % 7;
$padding = ($trailingDatasets >= 1) ? (7 - $trailingDatasets) : 0;
for ($i = 0; $i < $padding; $i++) {
  // push empty dataset
}
 
Zuletzt bearbeitet:

EnesE

Grünschnabel
#3
Das geht wie folgt:
PHP:
$numberOfDatasets = 52;
while ($numberOfDatasets % 7 != 0) {
  // push empty dataset
}

// Effizienter:
// hier: 7 - (52 % 7) = 7 - 3 = 4
// => wir müssen auf 52 noch 4 Datensätze hinzufügen, um zu 56 zu kommen
$padding = 7 - $numberOfDatasets % 7;
for ($i = 0; $i < $padding; $i++) {
  // push empty dataset
}

Danke dir :)