Problem mit Tabellenkopf

phpler87

Grünschnabel
Hallo,

Ich will aus der Datenbank eine Tabelle erzeugen, der Tabellekopf muss jedoch VOR die while-Schleife der Abfrage, da sonst jede Zeile automatisch den Tabellenkopf bekommt.
Soweit auch kein Problem, aber ich möchte zusätzlich zur Ausgabe des Tabellenkopfes eine if-Abfrage einbauen, diese prüft, welche Spalten im Tabellenkopf passend zu den Zeilen ausgegeben werden müssen.

Also nach folgender Struktur der Tabelle in der Datenbank:

|Titel A|Titel B|Titel C|Titel D

Die Tabelle hat vier Spalten, jedoch soll es auch möglich sein, für Einträge in der Tabelle, bei denen zum Beispiel der Titel C Eintrag fehlt, den Tabellenkopf auf drei Spalten ohne "Titel C" anzupassen.

Es kann also schlecht gehen, dass ich z.B
if($titelc == 0) oder if(empty($titelc))
...

VOR die while-Schleife der Abfrage schreibe, da die If-Anweisung, dann ja nicht auf "$titelc" zugreifen und ihn somit überprüfen kann.

Wie kann ich das Problem lösen?


Danke im Vorraus
Thomas
 
kann es auch bei deiner Ausgabe vorkommen, dass bei einer deiner Zeilen "Titel A" und bei der nächsten z.B. "Titel C" fehlt?
 
dann würde ich an deiner Stelle gucken, ob das leer ist und dann einen anderen Inhalt ausgeben, weil eine leere Zelle nicht sonderlich gut aussieht (also z.B. kein Eintrag vorhanden oder ein Satz, der dann zu deinem Problem passt)
 
Wenn die Datenbank MySQL ist, dann gibt es in PHP die Funktion [phpf]mysql_fetch_field[/phpf]. Die ist mit einer while Schleife zu verwenden, wie mysql_fetch_array oder mysql_fetch_row. Soweit ich weiss, kannst Du damit vorher die Felder auslesen und dann mit mysql_fetch_array etc. auch noch die Ergebnisse.

Gruß hpvw

EDIT: Ich vermute gerade, dass Dein Problem damit nicht gelöst wird.
In Deinem Query ist Titel C ja vorhanden, nur unter Umständen nicht im Ergebnis?

Also müsstest Du Dein Ergebnis evtl. in einem Array "zwischenspeichern" und in einer weiteren [phpf]foreach[/phpf]-Schleife ausgeben:
PHP:
//db-connect
$result=mysql_query("Dein Query");
$titelC = false;
$resultTable = array();
while ($row=mysql_fetch_assoc($result)) {
    $resultTable[] = $row;
    if (!empty($row['titelC'])) {
        $titelC = true;
    }
}
if ($titelC) {
    echo "Tabellen-Header mit Titel C";
    foreach ($resultTable as $row) {
        echo "Alle Spalten";
    }
}  else {
    echo "Tabellen-Header ohne Titel C";
    foreach ($resultTable as $row) {
        echo "Alle Spalten ausser der Titel C Spalte";
    }
} 
echo "</table>";

Noch ein Gruß von hpvw
 
Zuletzt bearbeitet:
Zurück