Flip: Datensatz in Spalten ausgeben.

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

  1. 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

  2. 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

    --
    „This is the author's opinion, not necessarily that of Starbucks.“