Ankündigung

Einklappen
Keine Ankündigung bisher.

Grosses Formular mit case trennen?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Grosses Formular mit case trennen?

    Hallo zusammen

    Ich bin der neue und bereits mit den ersten Fragen dabei

    Ich plane gerade ein Anmeldeformular mit viel Inhalt.
    Da ich es übersichtlich erstellen möchte, muss es in mehrere Schritte aufgeteilt werden.
    Ist es möglich die Schritte per "case" von einander zu trennen?
    Und sind am ende alle Daten da?
    Was empfehlt Ihr: Datenübergabe per Session oder besser "hidden" Felder?

    vielen Dank für eure Unterstützung


  • #2
    Mit dieser Frage kann niemand etwas anfangen.
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      Ich würde Session nehmen, dann kann der User nichtmehr an den Daten pfuschen in den einzelnen Schritten.
      Signatur:
      PHP-Code:
      $s '0048656c6c6f20576f726c64';
      while(
      $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

      Kommentar


      • #4
        Warum sollte der an den von ihm selbst eingegebenen Daten "herumpfuschen" wollen? Mit der Backspace-Taste kann er ja an die normalen Eingabefelder kommen und die Daten so genauso wieder ändern.
        Ich favorisiere die Session-Version aber deshalb, weil Bots dadurch ausgesperrt werden. Wie heute im Parallelthread zu dieser Frage gelernt muss man aber beachten, dass Leute mit mehreren Browsertabs herumexperimentieren könnten.
        PHP-Code:
        if ($var != 0) {
          
        $var 0;

        Kommentar


        • #5
          Es sollte beachtet werden, das der Benutzer das Formular mehrere male parallel ausfüllen kann (der UseCase ist nach Senden der ersten Formularseit noch nicht beendet, der Benutzer kann aber bereits eine zwite Instanz des UseCases starten). Es wird also eine Strategie benötigt, wie damit verfahren werden soll ohne das sich die Daten in die Quere kommen. Die einfachste Strategie ist wohl, die Daten in versteckten Formularfeldern zwischenzuspeichern.

          Zitat von Wolla Beitrag anzeigen
          ... dass Leute mit mehreren Browsertabs herumexperimentieren könnten.
          Ja, genau das meine ich. Hab' ich beim ersten Lesen übersehen.
          Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden

          Kommentar


          • #6
            Dem kann man begegnen, indem man beim ersten Start einen Zähler mit 0 beginnen lässt, der in der Session liegt. Kommt jemand ein zweites Mal mit einem weiteren Tab und beginnt ein neues Formular, dann wird der Zähler inkrementiert und man geht in die nächste Dimension des Erfassungsarrays.
            PHP-Code:
            if ($var != 0) {
              
            $var 0;

            Kommentar


            • #7
              Lege das Anmeldeformular am Besten als Singleton an, dann kann nichts schief gehen.

              Kommentar


              • #8
                So ein Schmarn, Singleton bringt dir überhaupt nichts wenn der User mehrere Tabs offen hat!

                Kommentar


                • #9
                  LOL. Ein Request-Singleton. Diese Website wird momentan von einem anderen User benutzt. Bitte warten.


                  inkrementierende Zähler können problematisch sein, wenn man den zweiten Tab schließt und dann mit dem ersten fortfahren will.
                  --

                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                  --

                  Kommentar


                  • #10
                    Intressant das es dazu keine 08.15 Lösung gibt.

                    Nun, wie steht es mit der Trennung.
                    Kann ich ein mehrseitiges Formular mit "case" trennen oder doch besser für jede Formularseite eine eigene Datei?

                    Kommentar


                    • #11
                      Zitat von Wolla Beitrag anzeigen
                      Dem kann man begegnen, indem man beim ersten Start einen Zähler mit 0 beginnen lässt, ...
                      Du meinst so 'ne Art Identifikator für ausgelieferte Formularinstanzen, oder? Drupal macht das so. Allerdings generiert Drupal dazu einen UUID.

                      Zitat von tüdelü Beitrag anzeigen
                      Intressant das es dazu keine 08.15 Lösung gibt.
                      Vielleicht gibt es ja eine. Mich hat es vor ein paar Jahren sehr überrascht, dass es eine Standardlösung für "ein Objekt soll über Änderungen eines zweiten Objektes beanachrichtigt werden, das zweite Objekte soll aber nicht alle Klassen kennen, zu denen benachrichtigte Objekte gehören können" gibt. Und seltsamerweise sah die Standardlösung genau so aus, wie das was ich schon immer verwendet habe.

                      Zitat von Wolla Beitrag anzeigen
                      Kann ich ein mehrseitiges Formular mit "case" trennen ...
                      Ja.

                      Zitat von Wolla Beitrag anzeigen
                      ... oder doch besser für jede Formularseite eine eigene Datei?
                      Solange es in deine Architektur passt sehe ich weder bei der einen noch bei der anderen Variante einen Vorteil.

                      Mein Tipp: Baue verkleinerte Versionen (ein Formularfeld) beider Varianten und schau nach welche dir besser gefällt.
                      Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden

                      Kommentar


                      • #12
                        Entweder stehe ich auf dem Schlauch oder ich weiß auch nicht. Bevor über die Multi-Tab-Problematik diskutiert wird, sollte sich die Frage gestellt werden, ob dies bei einem einfachen, mehrseitigen Anmeldeformular überhaupt zutrifft.

                        Ist dies nicht der Fall, so kann ich von meiner Seite empfehlen, das Formular als Singleton anzulegen (ja, lacht ruhig) und das Objekt "Anmeldeformular" in der Session abzulegen. Damit sind am Ende alle Daten da und die Schritte können bequem per "case" getrennt werden. Ein kleine Prüfrountine gewährleistet ebenfalls, dass die bereits eingegebenen Daten bei "Eine Seite vor / Eine Seite zurück" angezeigt werden.

                        Wie gesagt, sollten keine Abhängigkeiten bei der Anzeige von Formularfeldern auf den verschiedenen Formularseiten bestehen, was ich bei einem normalen Anmeldeformular vermuten könnte, ist meiner Meinung nach das Multi-Tab-Problem nicht von Relevanz.

                        Kommentar


                        • #13
                          Wir reden hier von Browsertabs!! Da ist Singleton total Hupe, weil jeder Tab einen eigenen Request abbildet, diese sich aber die Session teilen! Ob das von Relevanz ist, entscheidet einzig das Userverhalten. Also ja, es ist sinnvoll, darüber nachzudenken.
                          --

                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                          --

                          Kommentar


                          • #14
                            Sorry, da kann ich Leider nicht mitsprechen. Ich bin wircklich ein Anfänger, das ist mein erstes Formular......

                            Aber wenn jemand mein Grundgerüst begutachten könnte:

                            PHP-Code:
                            $wert = isset($_GET["send"])?intval($_GET["send"]):0;
                            if(isset(
                            $_GET['submit']))
                                            {
                                                
                            $wert ++;
                                                
                                            }
                                            else
                                            {
                                                echo 
                            "";
                                            }

                                    switch (
                            $wert)
                                    {
                                        case 
                            "0"://Step1 
                                            
                            echo "<blockquote><strong>"_UEBERSCHRIFT."</strong>"_STEP1TXT;"</blockquote>";
                                            echo 
                            "<form action=".htmlspecialchars($_SERVER["PHP_SELF"])." method='get' >";
                                            echo 
                            "Formular 1";
                                            echo 
                            "<br/><br/>";
                                            echo 
                            "<input type='submit' value='weiter' name='submit'/>";
                                            echo 
                            "<input type='hidden' value='".$wert ++."'name='send' />";
                                            echo 
                            "</form>";
                                            break;
                                            
                                        case 
                            "1"//Check Step1 
                                            
                            echo "Prüfe: ok  ++ / false  -";
                                            break;
                                            
                                            
                                        case 
                            "2"://Step2
                                            
                            echo "<blockquote><strong>"_UEBERSCHRIFT."</strong>"_STEP2TXT;"</blockquote>";
                                            echo 
                            "<form action=".htmlspecialchars($_SERVER["PHP_SELF"])." method='get' >";
                                            echo 
                            "Formular 2";
                                            echo 
                            "<br/><br/>";
                                            echo 
                            "<input type='submit' value='weiter' name='submit'/>";
                                            echo 
                            "<input type='hidden' value='".$wert ++."'name='send' />";
                                            echo 
                            "</form>";
                                            break;
                                            
                                        case 
                            "3"//Check Step2
                                            
                            echo "Prüfe: ok  ++ / false  -";
                                            break;
                                            
                                        
                                        case 
                            "4"://Step3
                                            
                            echo "<blockquote><strong>"_UEBERSCHRIFT."</strong>"_STEP3TXT;"</blockquote>";
                                            echo 
                            "<form action=".htmlspecialchars($_SERVER["PHP_SELF"])." method='get' >";
                                            echo 
                            "Formular 3";
                                            echo 
                            "<br/><br/>";
                                            echo 
                            "<input type='submit' value='weiter' name='submit'/>";
                                            echo 
                            "<input type='hidden' value='".$wert ++."'name='send' />";
                                            echo 
                            "</form>";
                                            break;
                                            
                                        case 
                            "5"://Check Step3
                                            
                            echo "Prüfe: ok  ++ / false  -";
                                            break;
                                            
                                        
                                        case 
                            "6"://Step4
                                            
                            echo "<blockquote><strong>"_UEBERSCHRIFT."</strong>"_STEP4TXT;"</blockquote>";
                                            echo 
                            "<form action=".htmlspecialchars($_SERVER["PHP_SELF"])." method='get' >";
                                            echo 
                            "Formular 4";
                                            echo 
                            "<br/><br/>";
                                            echo 
                            "<input type='submit' value='weiter' name='submit'/>";
                                            echo 
                            "<input type='hidden' value='".$wert ++."'name='send' />";
                                            echo 
                            "</form>";
                                            break;
                                        case 
                            "7"://Check Step4
                                            
                            echo "Prüfe: ok  ++ / false  -";
                                            break;
                                    } 
                            Damit wenigstens im Grundgerüst keine grossartige Fehler sind

                            Danke ....

                            Kommentar


                            • #15
                              Weiterleiten?

                              Nun bin ich schon einwenig weiter...

                              In dem case 1 checke ich ob die Daten vom case 0 angekommen sind.
                              Je nach dem wird der
                              PHP-Code:
                              $wert 
                              verändert.
                              Aber wie kann ich eine Umleitung in das nächste Case realisieren?

                              Kommentar

                              Lädt...
                              X