Konzeption:
Inspiriert durch das Tool meines Arbeitgebers und nach dem ich im vorgehenden Semester grossen Gefallen an PHP gefunden habe, entschied ich mich an dieses Projekt heranzuwagen. Zu Beginn zeichnete ich mir auf, wie viele Tabellen es braucht, was diese beinhalten sollten und wie sie in Relation stehen sollen.
Erste Priorität hatte der Admin-Bereich. Erst wenn dieser reibungslos funktionierten würde, wollte ich mich an die Ausgabe der Daten machen. Im Kopf hatte ich einen klassischen Einsatzplan mit Zeitachse und einer Auflistung aller eingesetzten Personen.
Umsetzung:
Zu Beginn war ich sehr auf die Projekte aus dem Fach "Interaktive Medien" des 3. Semesters fokussiert und kupferte die grundsätzlichen Datenbankbefehle und -verbindungen von dort ab. Nach dem die Seite funktionell grob stand, war ich in den grundlegenden PHP-Funktionen inzwischen sattelfest, so dass ich mich den im Programmieren bekanntlich immer wieder neuen Problemen widmen konnte:
- Eine While-Schlaufe kann nicht in einer anderen While-Schlaufe verschachtelt werden. Nach dem ersten Durchlauf der äusseren Schlaufe, ist die innere erfüllt und wird nicht mehr weiter ausgeführt.
Lösung: foreach($row as $value)
- Unterschiedliche IDs vergeben, wenn mit while und foreach gearbeitet wird.
Lösung: Die ID setzt sich aus zwei Zahlen, welche je von einer Funktionen abhängig sind, zusammen. Das heisst, jeder Teilnehmer im Modal "Teilnehmer zuordnen" hat eine ID bestehend aus der Auftrags-ID und der Teilnehmer-ID.
- Versuch den Einsatzplan mit Hilfe von Google-Charts auszugeben. Das Ergebnis war aber nicht zufriedenstellend.
Lösung: Ausgabe über Ajax
- Zeit- und Datumformat wird in der Datenbank anders gespeichert, als ich sie in der Ausgabe brauche.
Lösung: Das Datum und die Uhrzeit wird in mehreren Spalten gespeichert(Jahr, Monat, Tag, Stunde, Minute) und bei der Ausgabe zusammengesetzt.
- Die Bedingung, welche Überschneidungen mit anderen Aufträgen feststellt, sowie die Funktionen, welche andere Teilnehmer desselben Auftrages aufruft, erforderten viele Skizzen, Versuche und Misserfolge.
- Es schien mir ein Ding der Unmöglichkeit PHP-Variablen in JavaScript zu übergeben, so dass diese in AJAX verwendet werden könnten. Ich kann mir das nicht erklären, aber das sollte doch möglich sein!?
Lösung: Nach dem Änderungen vorgenommen werden, erscheint zuerst eine Erfolgs- oder Fehlermeldung und danach wird die Seite aktualisiert, so dass die Änderungen sofort sichtbar sind.
Feedback:
Ich habe zu verschiedenen Zeitpunkten der Entwicklung Feedbacks in meinem Kollegenkreis eingeholt. ich erhielt einige Anregungen, was noch "Nice-to-have" wäre, oder was noch nicht verständlich ist.
Weil nicht immer alle ganz so Technik affin sind, entschied ich mich kurzerhand noch ein einfaches Tutorial zu erstellen.