Tabelle generieren mit Daten aus DB
Hallo zusammen, ich hoffe jemand kann mir bei einer DB-Abfrage helfen.
Folgendes Konstrukt:
PHP5, MySQL5.x
Datenbank (die relevanten felder):
kurs > kursid | kursnummer | kursname
termine > terminid | kursid | kursdatum
buchung > buchid | terminid
Wie ihr sehen könnt gibt es erst mal verschiedene Kurse, die sich wiederum in verschiedene Termine aufspalten.
Die Termine sind dabei mit kursid an den Kurs verknüpft, die einzelnen Buchungen mit terminid an die Termine.
Was ich jetzt brauche: Eine Matrix, wo nach x die Kurse aufgeführt sind und nach y die Termine.
Als Daten sollen dann die Anzahl der Buchungen stehen.
$x = $db->query("SELECT k.*, t.* FROM kurs k, termine t WHERE k.kursid = t.kursid ORDER BY k.kursnummer");
while ($row = $db->fetch_array($x)){
list($buchcount)=$db->query_first("SELECT COUNT(*) FROM buchung WHERE terminid = $row[terminid]");
echo ("$row[ksnr] > $row[kdate] > $buchcount <br>");
}
Ausgabe:
102030 > 2008-10-11 > 4
102030 > 2008-09-23 > 3
102030 > 2008-10-14 > 0
102030 > 2008-10-15 > 0
102031 > 2008-10-12 > 2
102032 > 2008-10-08 > 1
102032 > 2008-10-12 > 1
102032 > 2008-10-13 > 0
Diese Abfrage funktioniert ja schon mal ganz gut. Nur komm ich jetzt nicht klar, das ganze in eine Tabelle nach oben genannten Kriterien zu werfen. Ich hab dazu schon mehrere while-schleifen versucht, mehrdimensionale Arrays, aber ich bekomm die Ausgabe in eine Tabelle einfach nicht hin.
Ich hoffe ihr wisst ungefähr was ich meine und habt einen Lösungsvorschlag für mich.
Vielen Dank schon mal fürs Ansehen.
mfg
Jon
Folgendes Konstrukt:
PHP5, MySQL5.x
Datenbank (die relevanten felder):
kurs > kursid | kursnummer | kursname
termine > terminid | kursid | kursdatum
buchung > buchid | terminid
Wie ihr sehen könnt gibt es erst mal verschiedene Kurse, die sich wiederum in verschiedene Termine aufspalten.
Die Termine sind dabei mit kursid an den Kurs verknüpft, die einzelnen Buchungen mit terminid an die Termine.
Was ich jetzt brauche: Eine Matrix, wo nach x die Kurse aufgeführt sind und nach y die Termine.
Als Daten sollen dann die Anzahl der Buchungen stehen.
$x = $db->query("SELECT k.*, t.* FROM kurs k, termine t WHERE k.kursid = t.kursid ORDER BY k.kursnummer");
while ($row = $db->fetch_array($x)){
list($buchcount)=$db->query_first("SELECT COUNT(*) FROM buchung WHERE terminid = $row[terminid]");
echo ("$row[ksnr] > $row[kdate] > $buchcount <br>");
}
Ausgabe:
102030 > 2008-10-11 > 4
102030 > 2008-09-23 > 3
102030 > 2008-10-14 > 0
102030 > 2008-10-15 > 0
102031 > 2008-10-12 > 2
102032 > 2008-10-08 > 1
102032 > 2008-10-12 > 1
102032 > 2008-10-13 > 0
Diese Abfrage funktioniert ja schon mal ganz gut. Nur komm ich jetzt nicht klar, das ganze in eine Tabelle nach oben genannten Kriterien zu werfen. Ich hab dazu schon mehrere while-schleifen versucht, mehrdimensionale Arrays, aber ich bekomm die Ausgabe in eine Tabelle einfach nicht hin.
Ich hoffe ihr wisst ungefähr was ich meine und habt einen Lösungsvorschlag für mich.
Vielen Dank schon mal fürs Ansehen.
mfg
Jon
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 88058
Url: https://administrator.de/forum/tabelle-generieren-mit-daten-aus-db-88058.html
Ausgedruckt am: 22.12.2024 um 12:12 Uhr
2 Kommentare
Neuester Kommentar
Hallo,
nun hatte ich das alles schön aufgeschrieben und dann schmeisst mich administrator.de raus (neue Passworteingabe nach dem Absenden und die POST-Daten natürlich futsch *grrrr*).
Daher nochmal auf die Schnelle, ich hoffe, es ist verständlich:
Du kannst über ein mehrdimensionales Array arbeiten:
$tabelle[$zeile][$spalte]
Als erstes die Kopfzeile erzeugen (alle Kurse), 1. Spalte bleibt frei, da diese ja das Datum beinhaltet.
Dann die Datums (ich weiss, das ist sprachlich falsch, aber "Daten" wäre hier irreführend ) in
$tabelle[$zeile] speichern
Darauf eine verschachtelte foreach:
foreach zeile {
foreach $spalte {
und hier die DB-Abfrage über Spalten- und Zeilenname
}
}
Das Ganze ist lediglich als Ansatz zu verstehen. Bei vielen Terminen/Kursen wäre das aber ziehmlich Ressourcenfressend. Allerdings müsste man dann schon bei dem vorhandenen DB Design anfangen zu überarbeiten.
vg Bytecounter
nun hatte ich das alles schön aufgeschrieben und dann schmeisst mich administrator.de raus (neue Passworteingabe nach dem Absenden und die POST-Daten natürlich futsch *grrrr*).
Daher nochmal auf die Schnelle, ich hoffe, es ist verständlich:
Du kannst über ein mehrdimensionales Array arbeiten:
$tabelle[$zeile][$spalte]
Als erstes die Kopfzeile erzeugen (alle Kurse), 1. Spalte bleibt frei, da diese ja das Datum beinhaltet.
Dann die Datums (ich weiss, das ist sprachlich falsch, aber "Daten" wäre hier irreführend ) in
$tabelle[$zeile] speichern
Darauf eine verschachtelte foreach:
foreach zeile {
foreach $spalte {
und hier die DB-Abfrage über Spalten- und Zeilenname
}
}
Das Ganze ist lediglich als Ansatz zu verstehen. Bei vielen Terminen/Kursen wäre das aber ziehmlich Ressourcenfressend. Allerdings müsste man dann schon bei dem vorhandenen DB Design anfangen zu überarbeiten.
vg Bytecounter