VivienSchiller: Terminübersicht eingeben

Hallo ihr Lieben!

Ich hatte bereits eine Frage eingereicht in der es im Ansatz um das gleiche geht (hier). Allerdings bedarf es bei dieser Frage ein bisschen Kreativität. Und zwar fehlt mir jeder Realisierungsansatz die Termineingabe für den Admin-Bereich technisch zu gestalten.

Folgendes soll umgesetzt werden:

Im Admin-Bereich stehen permanent die Monate August bis Juli (Aug, Sept, Okt, Nov, Dez, Jan, Feb, März, Apr, Mai, Jun, Jul - in der Reihenfolge) worunter ein Formular ist mit:

  • Checkbox ob der Monat in der Terminübersicht für den Benutzer angezeigt wird oder nicht
  • Darunter etwa 30 Zeilen mit eine Spalte Datum, eine Spalte Beschreibung
  • Genau wie bei der vorherigen Frage sollen aktuelle Inhalte in dem Formular drin stehen
  • Und auch wie in der vorherigen Frage sollen die Inhalte in Datein nicht in Datenbanken gespeichert werden. Wobei ich ich hier offen für Vorschläge im Bereich JSON bin.

Auch wenn ihr das hier in den Forum hasst, wie ich weiß, wäre ich über Code-Schnipsel oder komplett gedachte Sequenzen sehr dankbar. Solltet ihr Spaß daran haben, hätte ich noch ein kleines Schmackerl für die Tüftler: die Möglichkeit Zeilen zu löschen und neue unterhalb der aktuelle hinzuzufügen.

Falls ich mich nicht klar ausgedrückt habe hier noch eine Paint-Skizze (maximale Professionalität): Bildbeschreibung

Liebe Grüße und danke im voraus!

  1. Dein Plan ist schonmalein ganz guter Anfang. Was das Speichern betrifft, würde ich so machen, dass die Daten serverseiti zentral gehalten werden und der Benutzer sich eine Replik ziehen kann womit er auch offline arbeiten kann. Ggf. kann ein Benutzer auch selbst Termine offline in seiner Replik eintragen und später mit der Zentrale abgleichen. Aber letztendlich entscheidet doch dein Kunde was gemacht wird.

    1. Dein Plan ist schonmalein ganz guter Anfang. Was das Speichern betrifft, würde ich so machen, dass die Daten serverseiti zentral gehalten werden und der Benutzer sich eine Replik ziehen kann womit er auch offline arbeiten kann. Ggf. kann ein Benutzer auch selbst Termine offline in seiner Replik eintragen und später mit der Zentrale abgleichen. Aber letztendlich entscheidet doch dein Kunde was gemacht wird.

      Danke für deine Antwort! Hättest du einen Vorschlag für sinnvolle Dateiformate, die das möglich machen?

      1. Dein Plan ist schonmalein ganz guter Anfang. Was das Speichern betrifft, würde ich so machen, dass die Daten serverseiti zentral gehalten werden und der Benutzer sich eine Replik ziehen kann womit er auch offline arbeiten kann. Ggf. kann ein Benutzer auch selbst Termine offline in seiner Replik eintragen und später mit der Zentrale abgleichen. Aber letztendlich entscheidet doch dein Kunde was gemacht wird.

        Danke für deine Antwort! Hättest du einen Vorschlag für sinnvolle Dateiformate, die das möglich machen?

        Das häng davon ab ob Du deine Libraries selbst entwicklen willst oder nicht. JS kann zb mit Sqlite und Perl kann das auch. Ziel erkannt? Dann schieß los ;)

      2. Hallo Vivien,

        Ich bin zwar nicht pl, aber antworte einfach mal:
        Das Datenformat ist so ziemlich egal, du könntest mit CSV (hätte den Vorteil, dass du es mit Excel (lieber nicht, kommt meist nur Schrott bei raus) oder Calc öffnen könntest), XML oder Datenbanken (finde ich persönlich sehr bequem) arbeiten.

        Das mit dem zusätzlichen offline-Arbeiten würde ich nicht empfehlen, wenn du es nicht wirklich brauchst:

        • du musst den Nutzern das Dateiformat erklären
        • die Software muss fehlertolerant sein (falsche Syntax, falsche Zeichenkodierung?)
        • Verlorenes-Update-Problem muss trotzdem verhinert werden
        • du musst zusätzlich immer noch ein Webinterface zum Editieren implementieren

        Ich würde vorschlagen, du klärst folgendes ab:

        1. Brauchst du ein Webinterface oder reicht es dir, wenn du im Texteditor eine CSV-Datei (oder ähnliches) editieren kannst oder alternativ eine MySQL-Datenbanktabelle mit PHPmyAdmin oder Adminer bearbeitest? → Dann bräuchtest du nur ein Skript für die Ausgabe auf der Webseite schreiben
        2. Musst nur du oder auch jemand anders (parallel) dieses Formular nutzen? → Dann müsstest du einen Verriegelungsmechanismus implementieren, der das Verlorenes-Update-Problem verhindert

        Wenn du 1. mit „Texteditor reicht“ und 2. mit „ich allein bzw. Leute, mit denen man sich absprechen kann“ beantwortest, kannst du auch CSV-Dateien mit folgendem Inhalt anlegen:

        2016-08-13 14:30;Mitarbeiterversammlung;0
        2016-04-29 18:00;Seminar;1
        2016-03-10 9:30;Anmeldung fürs Seminar;1
        

        Erklärung zum Beispiel-Datenformat: Vor dem ersten Semikolon stehen Datum und Uhrzeit, bis zum zweiten, was an diesem Termin passiert und als letztes, ob der Eintrag öffentlich (1) oder eben nicht öffentlich (0) sein soll. Mit PHP ließe sich sowas recht einfach parsen.

        Gruß
        Julius

        1. Hallo,

          CSV (hätte den Vorteil, dass du es mit Excel (lieber nicht, kommt meist nur Schrott bei raus) oder Calc öffnen könntest)

          also da muss ich mal widersprechen. Ich bin nun wirklich kein Fürsprecher für Microsoft-Produkte, aber so übel ist Excel nicht. Ich habe schon oft und meist ohne Probleme CSV-Dateien in Excel importiert, und gerade weil das so schön einfach geht, produzieren von mir geschriebene Programme auch gern Ausgaben in CSV.
          Natürlich muss man beim CSV-Import in Excel die Feldformate und Delimiter korrekt angeben, das ist ja klar. Lässt man Excel einfach raten, kommt in der Tat oft Murks raus. Das ist dann aber eher ein Layer-8-Problem.

          Ciao,
           Martin

          1. Hallo Martin,

            Hallo,

            CSV (hätte den Vorteil, dass du es mit Excel (lieber nicht, kommt meist nur Schrott bei raus) oder Calc öffnen könntest)

            also da muss ich mal widersprechen. Ich bin nun wirklich kein Fürsprecher für Microsoft-Produkte, aber so übel ist Excel nicht. Ich habe schon oft und meist ohne Probleme CSV-Dateien in Excel importiert, und gerade weil das so schön einfach geht, produzieren von mir geschriebene Programme auch gern Ausgaben in CSV.
            Natürlich muss man beim CSV-Import in Excel die Feldformate und Delimiter korrekt angeben, das ist ja klar. Lässt man Excel einfach raten, kommt in der Tat oft Murks raus. Das ist dann aber eher ein Layer-8-Problem.

            Mh, dann hat wohl jemand (womöglich ich selbst?) vorher die Abfrage nach den Details weg konfiguriert oder die Datei war einfach so kaputt, dass man damit nichts mehr anfangen konnte. Kann man auch den Zeichensatz der CSV einstellen?

            Gruß
            Julius

            1. Hi,

              Natürlich muss man beim CSV-Import in Excel die Feldformate und Delimiter korrekt angeben, das ist ja klar. Lässt man Excel einfach raten, kommt in der Tat oft Murks raus. Das ist dann aber eher ein Layer-8-Problem.

              Mh, dann hat wohl jemand (womöglich ich selbst?) vorher die Abfrage nach den Details weg konfiguriert oder die Datei war einfach so kaputt, dass man damit nichts mehr anfangen konnte.

              oder du hast nicht den Import-Assistenten benutzt, sondern einfach über Datei/Öffnen versucht? In dem Fall kann ich auch bestätigen, dass es meistens in die Binsen geht, und da gibt's auch keine Abfrage der Details. Meist landet dann jeder Datensatz (jede Zeile) komplett in der ersten Spalte der Excel-Tabelle.

              Kann man auch den Zeichensatz der CSV einstellen?

              AFAIR nein. Da versucht Excel tatsächlich zu raten. Aber damit hatte ich bisher noch kein Problem, so dass ich noch nicht weiter darüber nachgedacht habe.

              So long,
               Martin

              1. Hallo Der Martin,

                Kann man auch den Zeichensatz der CSV einstellen?

                AFAIR nein. Da versucht Excel tatsächlich zu raten. Aber damit hatte ich bisher noch kein Problem, so dass ich noch nicht weiter darüber nachgedacht habe.

                Zumindest beim Speichern geht es. (excel 2007 unter Win10)

                Alternativ-Text

                Und wenn ich mich recht erinnere, fragt excel auch nach, welcher Zeichensatz verwendet werden soll, wenn es offenbar nicht Windows-12-irgendwas ist.

                Bis demnächst
                Matthias

                --
                Das Geheimnis des Könnens liegt im Wollen. (Giuseppe Mazzini)
          • du musst den Nutzern das Dateiformat erklären

          Nein, es gibt Data Access (Abstraction) Layer: Selbst dem Programmierer ist das Format völlig egal ob das Sqlite, XML oder irgendein proprietäres Format ist oder ob die Daten in MySQL persistent sind.

          Der Programmierer bindet nur den Layer ein und in seinem Code werden nur noch Methoden aufgerufen: $record->write(Zum Beispiel).

          Der Benutzer muss nur wissen ob er ne Datei laden muss oder nicht. Gleichwohl beim Speichern.

          Und was Terminkalender betrifft: Gibts alles schon.

          1. Hi pl,

            Der Programmierer bindet nur den Layer ein und in seinem Code werden nur noch Methoden aufgerufen: $record->write(Zum Beispiel).

            Und wie schreibt man Offline in eine Datei?

            Bis bald

            --
            Hosen sind Blau
    • Und auch wie in der vorherigen Frage sollen die Inhalte in Datein nicht in Datenbanken gespeichert werden.

    Ich würde einen Counter anlegen (Datei mit einer Zahl drin), um für jeden neuen Eintrag eine ID zu bekommen.

    Dann die Einträge in einer CSV-Datei speichern.

    Für die Anzeige die CSV Datei lesen. Davon ausgehen, dass ein anderer Admin das zeitgleich auch machen kann.

    Beim Hinzufügen eines Termins per Javascript eine Zeile aufklappen, in die Datum und Bemerkung geschrieben wird (kann unbestimmt lange dauern). Beim Abschicken des Neu-Eintrags vom Counter die nächste ID holen, die Termin-Datei lesen, Termin einschieben, Termin-Datei schreiben.

    Beim Löschen eines Termins Termin-Datei lesen, Lösch-Kennung für die Zeile setzen, Datei schreiben.

    Linuchs

      • Und auch wie in der vorherigen Frage sollen die Inhalte in Datein nicht in Datenbanken gespeichert werden.

      Ich würde einen Counter anlegen (Datei mit einer Zahl drin), um für jeden neuen Eintrag eine ID zu bekommen.

      Dann die Einträge in einer CSV-Datei speichern.

      Für die Anzeige die CSV Datei lesen. Davon ausgehen, dass ein anderer Admin das zeitgleich auch machen kann.

      Beim Hinzufügen eines Termins per Javascript eine Zeile aufklappen, in die Datum und Bemerkung geschrieben wird (kann unbestimmt lange dauern). Beim Abschicken des Neu-Eintrags vom Counter die nächste ID holen, die Termin-Datei lesen, Termin einschieben, Termin-Datei schreiben.

      Beim Löschen eines Termins Termin-Datei lesen, Lösch-Kennung für die Zeile setzen, Datei schreiben.

      Linuchs

      Danke für die Antwort, jedoch scheint mir das ein wenig umständlich, oder ist es weniger als ich sehe?

  2. Moin!

    Obwohl das nicht jeder glaubt: Ich denke gerne nach, bevor ich Code poste. Und das vorgestellte würde ich dann doch anders machen. Auch weil ich einfache Lösungen bevorzuge.

    Begründung: Der Termin wird auf dem Server gespeichert. Das Sortieren kann also auf dem Server vorgenommen werden.

    Also Kalender-Tabelle, darunter (alternativ darüber, daneben, "Overlay", ...) statisch oder "on demand" ein ganz klassisches Formular mit Datum (Picker), Ereignis, Reset und Submit-Buttons.

    Nach dem Senden des Formulars wird der neue Termin (nach formalen Prüfungen wie "darf der das", "gültiges Datum", "Ereignis nicht leer", ...) in Deine Datenbasis (was auch immer das sei) eingetragen (wenn Du ohnehin eine Datenbank benutzt, dann benutze die auch hier) und dann die Seite mit den sortierten Einträgen (oder einer Fehlermeldung und dann auch den Formulardaten) neu geladen. Wenn Du das Sortieren dem Benutzer (in Admin-Oberflächen ist der Admin der Benutzer...) überlässt wird es nämlich Fehler geben.

    Jörg Reinholz

    1. Hallo Jörg! Danke für die Antwort!

      Moin!

      Obwohl das nicht jeder glaubt: Ich denke gerne nach, bevor ich Code poste. Und das vorgestellte würde ich dann doch anders machen. Auch weil ich einfache Lösungen bevorzuge.

      Das kommt mir sehr entgegen, denn ich will schon verstehen was mir angeboten wird.

      Begründung: Der Termin wird auf dem Server gespeichert. Das Sortieren kann also auf dem Server vorgenommen werden.

      Also Kalender-Tabelle, darunter (alternativ darüber, daneben, "Overlay", ...) statisch oder "on demand" ein ganz klassisches Formular mit Datum (Picker), Ereignis, Reset und Submit-Buttons.

      Nach dem Senden des Formulars wird der neue Termin (nach formalen Prüfungen wie "darf der das", "gültiges Datum", "Ereignis nicht leer", ...)

      Das sind Dinge die eigtl nicht notwendig sind.

      in Deine Datenbasis (was auch immer das sei) eingetragen (wenn Du ohnehin eine Datenbank benutzt, dann benutze die auch hier) und dann die Seite mit den sortierten Einträgen (oder einer Fehlermeldung und dann auch den Formulardaten) neu geladen. Wenn Du das Sortieren dem Benutzer (in Admin-Oberflächen ist der Admin der Benutzer...) überlässt wird es nämlich Fehler geben.

      Okay ich verstehe, wie du vorgehen möchtest allerdings weiß ich nicht wie ich das umsetzen könnte...