Enrico: Daten nach Vorschau endgültig speichern

Hallo,

bitte entschuldigt meine für einige unter euch vielleicht sehr banale Frage, aber wie kann ich die in einer Vorschau angezeigten Formulardaten endgültig "absenden"?

Details zu meiner Frage:

Ich schicke ein Formular per Javascript ab und lasse über php die eingegebenen Daten in Tabellenform in einer Vorschau ausgeben, die notwendigen Validierungen sind vorab natürlich erfolgt.

Seitenspezifische Schaltflächen (beispielsweise beim Lesen der Einträge wie "Erste Seite", "Zurückblättern",...) gebe ich dynamisch über Javascript aus und so soll es auch bei der Vorschauseite sein.

Muss ich hier einen zweiten "submit"-Befehl einbauen mit erneuter "action"-Anweisung oder was schlagt ihr vor?

Das Abspeichern selber sollte kein Problem darstellen, mir geht es rein um die Vorgehensweise zum erneuten (?) Absenden (?).

Und bitte haltet eure Tip(p)s einfach, bin immer noch ein relatives php-Greenhorn, wenn ich auch wieder gut aufgeholt habe ;-)

Vielen Dank und Gruß.
Enrico

  1. Ich bin nicht sicher ob ich deine Frage richtig verstanden habe, aber...

    Muss ich hier einen zweiten "submit"-Befehl einbauen mit erneuter "action"-Anweisung oder was schlagt ihr vor?

    Ja sicher, wie sonst ^^

    Auf der Serverseite hast du im Grunde zwei Möglichkeiten: Nach dem ersten Absenden könntest du die Daten bereits speichern und nach dem zweiten dann quasi "freischalten" oder so... (also eine Art Flag setzten, dass die Vorschau bestätigt wurde).
    Oder du kippst die ganzen Daten zurück in ein verborgenes Formular zusammen mit der Vorschau und nimmst es erneut entgegen, prüfst es und speichers es erst dann.

    Erstere Variante scheint mir geschickter, weil du die ganzen Daten nicht 3x verschicken musst (hin, zurück und wieder hin) und auch ein zweites Mal verarbeiten... Dafür musst du zuweilen eben unbestätigte Datensätze rauswerfen.

    --
    sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(
    1. Halle Deus,

      danke für Deine Antwort.

      Gut, sowas in der Art dachte ich mir fast schon, war mir aber nicht sicher, wie dies von der Systematik in der Praxis umgesetzt wird.

      Ich denke auch, dass Dein erster Vorschlag "besser" ist.

      Gruß
      Enrico

  2. Lieber Enrico,

    als Nutzer erwarte ich bei einer Vorschau, dass ich im Zweifelsfalle Änderungen an den abgeschickten Daten vornehmen kann. Deshalb gebe ich das ursprüngliche Formular erneut aus, damit der Benutzer Änderungen auch tatsächlich vornehmen kann (vergleiche Mailformular). Durch versteckte Formularfelder oder durch entsprechende Einträge in den Daten einer Session "erkenne" ich auf der Serverseite, ob das Formular mit oder ohne Vorschau abgeschickt wurde.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Hallo Felix, Du Nachtschwärmer ;-)

      danke für Deine Antwort. Ich hätte sie ja fast noch abwarten können, wenn ich gewusst hätte, dass Du noch länger auf bist als meinereiner ;-)

      Öhm, Du bist Lehrer an nem Gymnasium ?!? Interessant, auch das Mailformular, v.a. hinsichtlich des Spamschutzes. Greift dieser denn auch zuverlässig? Wenn ja, dürfte ich mir diese Variante für unsere Vereinshomepage "abkupfern"? Auch die Kombination aus zusammengefasster Vorschau und Formular in einer Seite ist geschickt. Ich denke, ich werde dies auch so machen.

      Gruß
      Enrico

      1. Lieber Enrico,

        Hallo Felix, Du Nachtschwärmer ;-)

        wiebitte? Ich war gerade beim Frühstück!

        danke für Deine Antwort. Ich hätte sie ja fast noch abwarten können, wenn ich gewusst hätte, dass Du noch länger auf bist als meinereiner ;-)

        Nein, das war "schon wieder auf" anstatt "noch auf". Der Unterricht beginnt schließlich recht früh...

        Öhm, Du bist Lehrer an nem Gymnasium ?!?

        Bin ich das? Wer behauptet denn sowas?

        Interessant, auch das Mailformular, v.a. hinsichtlich des Spamschutzes. Greift dieser denn auch zuverlässig?

        Ja.

        Wenn ja, dürfte ich mir diese Variante für unsere Vereinshomepage "abkupfern"?

        Du darfst das alles haben, wenn Du das willst.

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. Hallo Felix,

          wiebitte? Ich war gerade beim Frühstück!
          Nein, das war "schon wieder auf" anstatt "noch auf"
          Bin ich das? Wer behauptet denn sowas?

          Sorry, Felix, wollte Dir nicht zu nahe treten, falls ich das getan haben sollte.

          Du darfst das alles haben, wenn Du das willst.

          Danke für den Link, werde mir das gleich mal anschauen.

          Liebe Grüße zurück
          Enrico

  3. Hello,

    die sauberste Lösung ist es, eine Session zu benutzten:

    session_start();   ## http://de3.php.net/manual/en/function.session-start.php

    die gesendeten Daten aus dem Formular dort einzuspeichern.

    Startseite (Link auf Formularseite)
              |
              v
          Formular   (Mit Buttons: Vorschau, Nochmal; Link: Zurück ohne Speichern)
              | ^
              v |
          Vorschau, so wird die Seite aussehen... (mit Buttons: Druck, absenden, nachbessern;
              |                                        Link: Zurück zur X-Seite ohne Speichern)
              v
          Bestätigungsseite "Das haben sie gesendet" (mit Buttons: Druck, neue Mitteilung;
                                                          Link: zurück zur X-Seite)

    So stelle ich mir einen sauberen Ablauf vor.
    Auf JavaScript sollte verzichtet werden, evtl. mit Ausnahme des Angebotes des Druckbuttons, der aber nur angezeigt werden sollte, wenn JavaScript aktiv ist, also mitttels JavaScript erzeugt werden sollte. Andernfalls sollte dort stehen: "Vergessen Sie nicht, Ihre Mitteilung auszudrucken" oder ähnlich.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hallo Tom,

      die sauberste Lösung ist es, eine Session zu benutzten

      Das ist natürlich auch eine sehr gute Idee, wenn nicht vielleicht sogar die unkomplizierteste.

      Jetzt habe ich wahrlich die Qual der Wahl, wie ich es umsetze ;-)

      Danke für das "Struktogramm", das mir die Abfolge inkl. Konsequenzen bzw. Entscheidungen sehr gut bildlich darstellt :-)

      Gruß
      Enrico

      1. Hello,

        Danke für das "Struktogramm", das mir die Abfolge inkl. Konsequenzen bzw. Entscheidungen sehr gut bildlich darstellt :-)

        Das "Struktogramm" ist auch eher ein PAP (Programm-Ablauf-Plan) oder noch eher ein Vorgangs-Ablauf-Modell.

        So etwas solltest Du Dir immer anfertigen. Ich nehme dazu immer meine Pinwand und verschiedenfarige Kärtchen. Mit den "Screens" fange ich an. Weiße kärtchen, die immer die Formulare oder Anzeigen darstellen, also immer "Client-Kärtchen". Dazwichen kommen dann als nächstes die roten Kärtchen, die die Programmstücke auf dem Server symbolisieren. Die werden dann mit Wollfäden  verbunden mit den aktiven Requestelementen (also den Buttons und Links) der weißen Kärtchen.

        Und dann gibt es noch die dazwischenliegenden "Transmission Cards", die die Datenübertragung darstellen. Da kommen dann manchmal noch Überraschungen zu Tage.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hello,

          den Link wollte ich Dir noch mitschicken:
          http://www.netzmafia.de/skripten/ad/ad2.html

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
           ☻_
          /▌
          / \ Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
          1. Und nochmals "Hallo" :-)

            http://www.netzmafia.de/skripten/ad/ad2.html

            Sehr interessanter Link.

            Wenn ich früher mit dieser Art der strukturellen Entwicklung angefangen hätte, dann hätte ich die eine oder andere Problemstellung sicherlich einfacher, schneller und effektiver lösen können.

            Gruß
            Enrico

        2. Hallo Tom,

          Weiße kärtchen, die immer die Formulare oder Anzeigen darstellen, also immer "Client-Kärtchen". Dazwichen kommen dann [...]

          Wow, das nenne ich professionelle Visualisierung, Respekt, ich bin beeindruckt :-) *ernst-gemeint*

          Gruß
          Enrico

        3. Hallo,

          Danke für das "Struktogramm", das mir die Abfolge inkl. Konsequenzen bzw. Entscheidungen sehr gut bildlich darstellt :-)
          Das "Struktogramm" ist auch eher ein PAP (Programm-Ablauf-Plan) oder noch eher ein Vorgangs-Ablauf-Modell.
          So etwas solltest Du Dir immer anfertigen. Ich nehme dazu immer meine Pinwand und verschiedenfarige Kärtchen.

          ich habe dazu im Lauf der Jahre mein Whiteboard an der Wand lieben gelernt. Ist zwar mit 60x90 relativ klein; ich wünsche mir manchmal, es wäre etwas größer. Aber dann bräuchte ich eine zusätzliche Wand dafür. ;-)

          Da skizziere ich gern mal ins Unreine, bevor ich endgültig ans Werk gehe. Auch am Whiteboard kann man schnell Skizzen, Diagramme, Kästchen, Pfeile und Anmerkungen hinmalen, da ist schnell mal ein Kästchen wieder weggewischt und korrigiert, und man kann mal zwei, drei Schritte zurückgehen, um einen Gesamt-Überblick zu kriegen. Und die Stifte riechen so herrlich ...

          Mit Pinnwand und Kärtchen könnte ich mir das auch vorstellen - aber dann müsste ich mich schon heftig umgewöhnen.

          So long,
           Martin

          --
          Idealismus wächst mit der Entfernung zum Problem.
          Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
          1. Hello,

            Mit Pinnwand und Kärtchen könnte ich mir das auch vorstellen - aber dann müsste ich mich schon heftig umgewöhnen.

            Naja, diese "Pinwand" habe ich inzwischen auch im PC.
            Seit dem Unzug in mein Hexenhaus hier auf dem Berg ist für die großen Boards kein Platz mehr. Das war eben mehr als Vorstellungsmodell zu verstehen.

            Wenn man aber im Team so eine Übersicht entwirft, sind die guten alten Karteikärtchen durchaus noch praktisch. Bei den meisten (dümmlichen) Programmen kann man nämlich nichts "auf den Rand" schreiben, bei den Kärtchen zur Not sogar auf die Rückseite :-))

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
             ☻_
            /▌
            / \ Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. Hi,

              Naja, diese "Pinwand" habe ich inzwischen auch im PC.

              ich weiß, sowas gibt es. Aber ganz ehrlich: Bei der Konzeptfindung, dem Brainstorming und den ersten Entwürfen ist es mir lieber, mit traditionellen Mitteln zu arbeiten (Pinnwand, Tafel, Whiteboard, Schmierzettel), als schon vor dem Bildschirm zu sitzen, der erfahrungsgemäß den Blick immer etwas einengt (auch im übertragenen Sinn). Und die Programme, die man für solche Entwürfe nutzen kann, haben auch alle ihre Beschränkungen, wie du ja auch feststellst.

              Wenn man aber im Team so eine Übersicht entwirft, sind die guten alten Karteikärtchen durchaus noch praktisch.

              Ja, kann ich mir vorstellen. Wenn man im Team zusammensitzt (ich stelle mir mal 3..5 Leute vor), dann braucht man aber schon wieder eine recht große Pinnwand, damit auch jeder was sieht.

              Bei den meisten (dümmlichen) Programmen kann man nämlich nichts "auf den Rand" schreiben, bei den Kärtchen zur Not sogar auf die Rückseite :-))

              Hmm, auf der Rückseite ... das sind dann die Dinge, die einem zum Schluss irgendwann "zufällig" wieder auffallen, wenn's zu spät ist, weil sie ja die ganze Zeit verdeckt waren ...  :-|

              Ciao,
               Martin

              --
              Der Stress von heute ist die gute alte Zeit von morgen.
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
              1. Hello,

                Hmm, auf der Rückseite ... das sind dann die Dinge, die einem zum Schluss irgendwann "zufällig" wieder auffallen, wenn's zu spät ist, weil sie ja die ganze Zeit verdeckt waren ...  :-|

                Nee, auf der Rückseite durften die Mitarbeiter immer vermerken, dass _diese_ Idee von Ihnen war. Wenn das Projekt dann fertig war, und wir die Pinwand abgeräumt haben (da wurde dann verglichen, ob der Assi das auch richtig ins PC-Programm übernommen hat) kam immer die Frage: Wollen wir die Karte umdrehen?

                Kannst Dir die Reaktionen und den Spaß dabei sicher vorstellen. Denn manche Kärtchen haben sich später als echte Fleißkärtchen entwickelt oder auch als der größte Mist, den es dann zu berichtigen galt...

                Was dann für die eine Hälfte Schadenfreude bedeutet hat, hat für die andere aber oft auch Lob für die gute Idee ...

                Liebe Grüße aus dem schönen Oberharz

                Tom vom Berg

                --
                 ☻_
                /▌
                / \ Nur selber lernen macht schlau
                http://bergpost.annerschbarrich.de
  4. Hi,

    Ich schicke ein Formular per Javascript ab ...

    warum? Warum nicht "normal" über die Funktionen, die das HTML-Formular bietet?

    Seitenspezifische Schaltflächen (beispielsweise beim Lesen der Einträge wie "Erste Seite", "Zurückblättern",...) gebe ich dynamisch über Javascript aus

    Warum?

    Es ist durchaus in Ordnung, wenn du Javascript optional einsetzt, um einen Roundtrip Client->Server->Client einzusparen. Gerade eine Vorschau der eingegebenen Daten kann man so auch recht komfortabel machen. Ich lege aber als Entwickler wie auch als Nutzer immer Wert darauf, dass ein Formular auch ohne Javascript zumindest benutzbar bleibt.

    Ciao,
     Martin

    --
    Mit einem freundlichen Wort und einer Waffe erreicht man mehr, als mit einem freundlichen Wort allein.
      (Al Capone, amerikanische Gangsterlegende)
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(