tom_h: Tabellen ausgeben

Hallo zusammen

Stehe momentan etwas auf dem Schlauch und hoffe auf eure Tipps und Tricks.

Aus einer Tabelle lese ich bestimmte Werte aus: A, B, C, D, E, F
Ausgeben tue ich das Ganze in einer Tabelle (HTML):

A
B
-
C
-
D
-
E
-
F
-
Geht ja auch am einfachsten.
Nun möchte ich aber folgende Lösung.
Nach drei Zellen soll eine neue Zeile geschrieben werden. Also so etwa:
A
-
D
-

Aber irgendwie will mir nichts einfallen wie ich das mit PHP lösen kann. Die Daten übrigens lese ich in einer WHILE Schlaufe aus und zeige sie mit $var->spaltenname an.

Hat mir jemand einen kleinen Tipp?

Danke und Gruss
Tom

  1. hi,

    Nun möchte ich aber folgende Lösung.
    Nach drei Zellen soll eine neue Zeile geschrieben werden. Also so etwa:

    A B C
    D E F
    - - -

    Aber irgendwie will mir nichts einfallen wie ich das mit PHP lösen kann. Die Daten übrigens lese ich in einer WHILE Schlaufe aus und zeige sie mit $var->spaltenname an.

    Tabelle öffnen, Zeile öffnen, Wert in Tabellenspalte ausgeben.
    Wenn drei Stück ausgegeben, Zeile wieder schliessen, wenn weitere Werte kommen, neue Zeile öffnen.

    Zum Prüfen, ob ein Vielfaches von x erreicht wurde, eignet sich der Modulo-Operator.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Moin tom_h,

    Aber irgendwie will mir nichts einfallen wie ich das mit PHP lösen kann. Die Daten übrigens lese ich in einer WHILE Schlaufe aus und zeige sie mit $var->spaltenname an.

    Hat mir jemand einen kleinen Tipp?

    Baue einen Zähler in die Schleife ein. Wenn dieser 3 erreicht hat
    dann schreibe ein </tr> <tr> und setze den Zähler wieder auf 0.

    Du musst nur das Ende der Tabelle gesondert behandeln, wenn keine Daten mehr vorhanden sind.

    regds
    Mike©

    --
    Freunde kommen und gehen. Feinde sammeln sich an.
  3. Hello,

    ich teile solche Aufgaben immer in zwei Funktionen auf.

    Funktion Zeile_erzeugen
     - Übergabe des Datenarrays als Referenz
     - Übergabe der Anzahl Spalten
     - Übergabe der CSS-Klassen
       (verkürzt für jede Ausgabe das Array)

    Funktion Zeile_schreiben
     - Übergabe des Datenarrays als Referenz
     ...
       ruft Zeile_erzeugen auf

    solange noch Elemente im Array sind
        Zeile_schreiben

    Hinweis: Zeile_erzeugen muss die Zeile auf Anzahl auffüllen, wenn das Array leer ist.

    Andersherum ist es schwerer, wenn man die Darstellung spaltenweise aufbauen muss, weil HTML-tabellen eben zeilenweise aufgebaut sind.

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

    1. Hello,

      betrifft Deine Rückfrage per email...

      siehe http://forum.de.selfhtml.org/archiv/2007/3/t148943/#m966732

      Als Ansatz.

      Bei Dir sieht es ja so aus, dass Du das ganze Array mit der Ergebnismenge übergibst, und einfach immer mit der Funktion array_shift()
      http://www.php.net/manual/en/function.array-shift.php
      ein Element vorne abschneidest.

      Die Funktion sieht dann so aus:

      function make_trow(&$_data, $spaltenzahl)
        {
          $out = "":

      if (!is_array($_data)) return false;    ### wenn kein Datenarray vorhanden, gleich abbrechen

      $out .= "  <tr>\n";

      for ($spalte = 0; $spalte < $spaltenzahl; $spalte++)
          {
            $out .= "    <td class="td01">";

      $_zelle = array_shift($_data);
            if ($_zelle === NULL)
            {
              $out .= "&nbsp;";
            }
            else
            {
              $out .= $htmlentities($_zelle,ENT_QUOTES);
            }

      $out .=     "</td>\n";
          }

      $out .= "  <tr>\n";

      return $out;
        }

      Die Hüllfunktion für die Tabelle müsstest Du nun selber hinbekommen.

      Die muss dan solange laufen, wie das Array noch mehr als 0 Elemente hat.
      http://www.php.net/manual/en/function.count.php

      Harzliche Grüße vom Berg
      http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau