Datensatz in Spalten ausgeben.
Flip
- php
Hallo,
ich möchte gerne meinen Datensatz in 3 Spalten aufteilen:
1|2|3
A|D|G
B|E|
C|F|
Uns zwar soll linksbündig gefüllt werden (also so, dass immer in der letzteren Spalten Lücken entstehen dürfen. Die Sortierung ist Spaltenabhängig.
Mein Datensatz 0=>A, 1=>B, 2=>C usw. (dynamisch)
Wie kann ich das umsetzen? Gibt es dafür evtl. ein fertiges Script?
Danke für Hilfe,
Flip
Hallo Flip,
so ganz ist mir Dein Problem nicht klar.
Dein Datensatz besteht aus den Feldern A bis G und Du möchtest diese Felder spaltenweise ausgeben, anstat zeilenweise?
Nehmen wir mal an, Du hast Deine Daten in einem Array gespeichert und die einzelnen Felder sind zugreifbar über einen Index von 0 bix x.
Dann ist es doch ein reines mathematisches Thema. Du ermittelst ersteinmal die Anzahl der Felder mittels der count() Funktion.
Dann musst Du festlegen, wieviele Zeilen eine Spalte umfassen soll. Sagen wir y.
Also gibst Du die Werte zeilenweise und zwar folgende Werte des Arrays:
0, dann 0+y, dann 0+2*y usw...
danach
1, 1+y, 1+2*y usw.
Hilft Dir das weiter?
Gruß,
the-FoX
Hi,
1|2|3
A|D|G
B|E|
C|F|Uns zwar soll linksbündig gefüllt werden (also so, dass immer in der letzteren Spalten Lücken entstehen dürfen. Die Sortierung ist Spaltenabhängig.
Mein Datensatz 0=>A, 1=>B, 2=>C usw. (dynamisch)
Wie kann ich das umsetzen?
Zuerst Anzahl noetiger Zeilen ermitteln. Du hast sieben Werte, die in drei Spalten dargestellt werden sollen - also 7 durch 3 teilen, auf naechste Ganzzahl aufrunden - das ist die Anzahl deiner Zeilen, in diesem Falle 3.
Dann waere es guenstig, wenn die Daten bereits in einem Array vorliegen, auf das mit einem nummerischen Index zugegegriffen werden kann - also erstelle ein solches aus deinen Datensaetzen.
Anschliessend kann man die Zellen leicht mit zwei ineinander verschachtelten For-Schleifen erstellen lassen - und dabei den passenden Index berechnen, um auf das "richtige" Array-Element zuzugreifen, welches an der Stelle ausgegeben werden soll. Dabei den Fall abfangen, wenn der Index aus dem Array "herauslaeuft".
$data = array('A', 'B', 'C', 'D', 'E', 'F', 'G');
// Anzahl Spalten ist vorgegeben, Anzahl benoetiger Zeilen ermitteln
$anzahlSpalten = 3;
$anzahlDatensaetze = count($data);
$anzahlZeilen = ceil($anzahlDatensaetze / $anzahlSpalten); // ceil rundet auf naechsthoehere Ganzzahl auf
echo '<table>'; // Tabelle oeffnen
for($zeile=0; $zeile<$anzahlZeilen; $zeile++) { // mit dieser Schleife erzeugen wir die Zeilen
echo '<tr>'; // Tabellenzeile oeffnen
for($spalte=0; $spalte<$anzahlSpalten; $spalte++) { // mit dieser die Spalten
echo '<td>'; // Tabellenzelle oeffnen
$zugriffsIndex = $spalte * $anzahlZeilen + $zeile; //Spaltenindex mal Anzahl der Zeilen, plus Index aktueller Zeile
if($zugriffsIndex < $anzahlDatensaetze) { // es gibt einen Datensatz mit diesem Index
echo $data[$zugriffsIndex];
}
else { // es gibt keinen, also geben wir "nichts" aus
echo '-';
}
echo '</td>'; // Tabellenzelle schliessen
}
echo '</tr>'; // Tabellenzeile schliessen
}
echo '</table>'; // Tabelle schliessen
MfG ChrisB