Moin, moin.
Ich habe eine Tabelle in einer Datenbank mit folgenden Einträgen:
Code:
ID | Datum | Gruppe | Fahrzeug | Sonderdienst
2 | 11.01.2010 | 1 | LF 16 |
3 | 11.01.2010 | 2 | Wache |
4 | 25.01.2010 | | | Erste Hilfe
5 | 29.01.2010 | 2 | DLK |
6 | 08.02.2010 | 1 | RW2 |
7 | 08.02.2010 | 2 | LF 16 |
8 | 08.02.2010 | 3 | DLK |
Das ganze möchte ich dann als HTML Tabelle in der Form darstellen:
Code:
Datum | Grp 1 | Grp 2 | Grp3
11.01.2010 | LF 16 | Wache | ----
25.01.2010 | Erste Hilfe
29.01.2010 | ---- | DLK | ----
08.02.2010 | RW2 | LF 16 | DLK
So ziehe ich mir die Daten in ein Object ($row):
PHP-Code:
SELECT a.id, a.datum, a.gruppe, a.fahrzeug, a.sonderdienst, a.special, b.id as grp_id, b.bezeichnung
FROM `vuis_dienstplaene` AS a
LEFT JOIN `vuis_gruppen` AS b
ON b.id = a.gruppe
WHERE `datum` >= "".$jahr."-01-01\" and `datum` <= \"".$jahr."-12-31\" ORDER BY `datum` asc, `gruppe` asc
Mein Problem sind nun diese Sonderdienste sowie das Umsortieren der einzelnen Datenbankzeilen.
Mit folgendem Ansatz habe ich es bereits probiert:
PHP-Code:
if(isset($last_dat) and $row->datum <> $last_dat OR $data["6"] <> ''){ // Bedingung wird bei jedem Datumswechsel erfüllt
for ($gr=1; $gr<=6; $gr++){ // Wenn im $daten[$gr] noch nichts eingetragen wurde (kein Eintrag für
if (!isset($data[$gr])){ // Gruppe vorhanden), soll es auf "leere Zelle" gesetzt werden
$data[$gr] = "<td> </td>";
}
}
echo "<tr>
<td align=\"center\" width=\"90\" height=\"30\">".datum_to_de($last_dat)."</td>
$data[1] $data[2] $data[3] $data[4] $data[5] $data[6]
</tr>";
unset($data);
}
$data[$row->gruppe] = "<td align=\"center\" style=\"background-color:".$bg_color.";\" width=\"90\">".$text.$edit."</td>\n";
$last_dat = $row->datum;
// Übrig gebliebene:
echo "<tr>
<td align=\"center\" width=\"90\" height=\"30\">".datum_to_de($row->datum)."</td>
$data[1] $data[2] $data[3] $data[4] $data[5] $data[6]
</tr>";
Wenn man die Sonderdienste weglässt, funktioniert es so ganz prima.
Sobald aber ein Dienstabend aus der Reihe tanzt, klappt es mit der "Datums-Wechselbedingung" nicht mehr. Dann verschiebt sich alles.
Vor der Ausgabe wird übrigens per If überprüft ob es ein normaler oder ein Sonderdienst ist.
Hat jemand eine Idee oder einen anderen Ansatz wie ich das mit dem Umformen bewerkstelligen kann?
Oder soll ich was an der DB Struktur ändern?
MfG
Androxin
PS: Ich hoffe, dass meine Codeauszüge so reichen. Wenn nicht, kann ich auch noch mehr aus meiner Datei posten/erklären.
Vielen Dank schon mal :-)