Hallo,
habe mal eine Frage zur Array-Funktion.
Folgendes Grundproblem.
Möchte mir eine Timeline als Tabelle mit Personendaten (geboren / gestorben) erstellen. Die Daten kommen aus einer MySql Datenbank – abgefragt via php.
Suche mir zuerst das erste Geburtsjahr und das letzte Sterbejahr heraus(bzw. setzte einen Anfangs und Endpunkt – aber das ist erst später interessant). Weiß also jetzt wieviele Tabellenzellen es geben wird. Dann schreibe ich eine erste Zeile mit den jeweiligen Jahresangaben.
Nun kann ich natürlich für jeden DB-Eintrag eine Tabellenzeile schreiben und den Zeitraum darin eintragen, das führt aber zu einer langen unübersichtlichen Tabelle mit viel verschwendeten Platz.
Lieber würde ich es so machen, dass wenn mehrere Einträge in eine Zeile passen würden (also z.B. Person_1 1829 – 1877; Person_5 1878 – 1920; Person_17 1925 – 1980; etc.) diese auch in eine Zeile geschrieben würden. Das stellt mich allerdings vor das Problem, dass ich nicht weiß wieviele Tabelrows benötigt werden.
Muß also für jeden Eintrag abfragen ob es schon eine Tabelrow gibt in die der Eintrag passen würde oder ob eine neue Tabelrow angelegt werden muß. - Tja und dies ist momentan für mich ein nicht machbares Unternehmen und ich würde mich sehr freuen, wenn mir hier einer bei der Lösung dieses Problems behilflich sein kann.
Select min(year(birth)) as start from tabelle
habe also mein Start Jahr
End Jahr lege ich erstmal fest als z.B. 2000
Anzahl der <td> ist End Jahr-Start Jahr +1
Select name, year(birth)as b_year, year(death) as d_year, id from tabelle order by birth
und nun weiß ich nicht wie ich den PHP Code schreiben muß, damit abgefragt wird
IF 1. Eintrag
starte eine neue <tr>
ELSEIF
suche die <tr> nacheinander durch, bis erste <tr> gefunden wurde, in der Eintrag Platz hat.
ELSE
wenn keine gefunden lege neue <tr> an
und dann am Schluß müßten ja alle angelegten <tr> nochmals durchsucht werden um zu sehen, in welcher noch Zellen fehlen (und wie groß die jeweiligen fehlenden Zellen sein müssen), damit die jeweilige <tr> beendet werden kann.
Dann müßte jede einzelne so erstellte <tr> ausgegeben werden.
Ich denke mal das ist irgendetwas mit $tablerow[] aber da komme ich nicht weiter
Hoffe ich habe mich einigermaßen verständlich ausgedrückt und ihr könnt mir weiterhelfen.
Danke und Grüße,
Peter