Ankündigung

Einklappen
Keine Ankündigung bisher.

leeres Formular

Einklappen

Neue Werbung 2019

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

  • leeres Formular

    Hallo zusammen!

    Ich hab ein Formular, in dem man seine Daten eingeben kann.
    Da dieses Formular Teil eines Adressverwaltungsprogramms ist, kann man gleich wenn man einen neuen Eintrag erstellt, auch schon eine Adresse aus einer Auswahl nehmen.

    Wenn man also auf Adresse wählen klickt (ist sinnvoll, wenn mehrere Personen im selben Haushalt sind) kommt man auf eine Seite, auf der alle verfügbaren Adressen sind. Wenn man nun eine davon wählt, kommt man wieder zurück und die Felder, die für die Adresse zuständig sind (Wohnort, PLZ,...) sind nun ausgefüllt (mit der gewählten Adresse).

    Soweit sogut, aber das ganze hat noch einen kleinen Haken...
    Hat man nämlich zuvor schon etwas im Formular eingegeben (zB seinen Namen) dann ist das dann alles weg (weil die Seite neu geladen wird und nur die gewählten Adress-Daten wieder in die Felder kommen).

    Nun könnte ich ganz einfach jedes Feld via get zur Auswahlseite und wieder zurück schicken, aber das ist 1. sehr umständlich, 2. unschön und 3. schlecht, wenn sich das Formular mal ändert (neue Felder dazu oder alte weg).

    Also suche ich nun nach einer anderen Lösung.

    Hat jemand eine Idee?
    Wär eine Session hier richtig? (hab ich noch nie verwendet)

    Vielen Dank im Vorraus für jede Antwort!

  • #2
    hmm.. $_SESSION ist da meiner Meinung nach die Beste Lösung.

    Andere Möglichkeit wäre JavaScript. Dazu muss der Nutzer aber JavaScript im Browser aktiviert haben.
    http://www.fun2stay.de

    Kommentar


    • #3
      Hm, und $_SESSION geht immer, egal was der User im Browser aktiviert hat oder nicht?

      Kommentar


      • #4
        wenn du es richtig machst, Ja.

        schau mal hier:
        http://forum.developers-guide.net/thread29.html
        auch ein Forum (PHP)

        Kommentar


        • #5
          Ok, ich werd's mit Sessions versuchen.

          Dazu starte ich zu Beginn der Datei eine neue Session
          --> session_start();

          Dann werden für alle Felder im Formular Variablen erstellt und vorläufig mal "" belegt.
          --> $_SESSION["NAME"] = "";

          Dann hab ich aber schon ein Problem:
          Wie kann ich $_SESSION["NAME"] den Wert zuweisen, der gerade im Formular steht?

          Kommentar


          • #6
            Hm, vielleicht hab ich unverständlich erklärt, ich versuch's nochmal:

            Bisher hab ich immer via GET die Werte hin und her geschickt.

            Wenn man im Formular auf einen bestimmten Button klickt verläßt man das Formular. Man wählt eine Adresse, dadurch kommt man wieder zurück, und die Werte für die Adresse werden via GET mitgeschickt. Auf diese Weise steht jetzt im Formular schon was drin.

            Wenn man aber vorher schon was in das Formular geschrieben hat ist das nun weg.

            Ich möchte also also alle eingegebenen Werte in der Session speichern und beim zurückkehren die Felder damit ausfüllen.

            Das Problem ist aber, dass ich nicht weiß wie ich die Werte in die Session bekomme

            Es ginge, wenn ich das Formular abschicken würde, dann wären sie in POST drin, aber ich darf das Formular zu dem Zeitpunkt noch nicht wegschicken, weil sonst ein neuer Eintrag in der Datenbank erstellt wird. Dann würde jeder Eintrag unsinnigerweise mindestens 2 mal vorkommen (je nachdem wie oft sich der User umentscheidet...)

            Weiß jemand wie ich die Werte in die Session bekomme?

            Kommentar


            • #7
              du schickst das Formular an sich selber (<form action="$_SERVER['PHP_SELF']" method="post">) und ich w�rde Methode POST nehmen.

              Dann:
              PHP-Code:
              <?
              if(isset($_POST['name_des_senden_buttons']))
                {
                  foreach($_POST as $key => $value)
                      {
                         $_SESSION[$key] = $value;
                      }
                // ï¿½berpr�fung der Fehler...
              //  Dann weiterleiten mit header("Location: weiter.php?PHPSESSID=".session_id());
                }
              ?>
              Code:
              <form action.....>
                <input name="user" value="<?php echo $_SESSION['user']; ?>">
              </form>
              auch ein Forum (PHP)

              Kommentar


              • #8
                Hm,... ich schicke also das Formular an sich selbst, ok.

                Und wenn man den Absendebutton (Eintrag speichern) drückt, DANN ERST wird das Formular an die richtige Adresse geschickt, soweit ist mir das klar.

                Aber das hier verstehe ich nicht ganz:
                PHP-Code:
                <?
                if(isset($_POST['name_des_senden_buttons'])) 
                  { 
                    foreach($_POST as $key => $value) 
                        { 
                           $_SESSION[$key] = $value; 
                        } 
                  // ï¿½berpr�fung der Fehler... 
                //  Dann weiterleiten mit header("Location: weiter.php?PHPSESSID=".session_id()); 
                  } 
                ?>
                Was wird hier gemacht?
                Wo soll ich das in mein Script einfügen?

                Kommentar


                • #9
                  mit foreach($_POST .... werden alle $_POST Daten mit dem Name => $key (Name des Feldes, oder Button) und dem Wert => $value) geholt und dann sieht es z.B. so aus:
                  PHP-Code:
                  <?
                  // nach dem Absenden:
                  foreach($_POST as $key => $value)
                    {
                      echo $key.' : '.$value.'
                  ';
                      $_SESSION[$key] = $value;
                  // ist das gleiche, wie jedes Feld einzeln in die Session speichern
                      $_SESSION['user_feld'] = $_POST['user_feld'];
                    }
                  echo '<form ....>';
                  echo '<input type="text" name="user_feld" ....>';
                  ?>
                  auch ein Forum (PHP)

                  Kommentar


                  • #10
                    Ok, das hab ich jetzt auch verstanden.

                    Das ist ja echt toll, da muss ich nicht jedes Feld einzeln speichern!

                    Aber das hier hab ich noch nicht verstanden, was wird hier gemacht? :
                    Code:
                    <form action.....> 
                      <input name="user" value="<?php echo $_SESSION['user']; ?>"> 
                    </form>

                    Kommentar


                    • #11
                      nach dem Absenden, hast du automatisch die Variable $_POST['feld_name'] zur verfügung (wenn mit post gesendet).

                      mit <... value="asdf"> kannst du den Inhalt eines Input-Feldes vorgeben.
                      Wenn du z.B. eine ungültige Eingabe gefunden hast, und dann das Formular noch mal ausgibst, mit Fehlermeldung, so ist der Wert, den der User davor eingetragen hat immer noch im Feld drinn.
                      auch ein Forum (PHP)

                      Kommentar


                      • #12
                        Ok, das ist jetzt auch klar.

                        Fassen wir mal zusammen.
                        Wenn der User auf den einen Button klickt wird das Formular an sich selbst geschickt, die Werte in der Session gespeichert und beim zurückkommen werden die Werte wieder in die Felder geschrieben.

                        Was noch fehlt ist:
                        Wie kann ich das Formular jetzt an die richtige Adresse (zum Verarbeiten) schicken?
                        Ich muss ein else if einbauen, schon klar:
                        PHP-Code:
                        <?
                        else if(isset($_POST['SAVE']))
                        {
                            // was muss hier dann stehen, damit das Formular an die richtige Adresse kommt?
                        }
                        ?>
                        Also wenn if(isset($_POST['SAVE'])) true ergibt mache ich was?

                        Kommentar


                        • #13
                          also, wenn das alles passiert ist, und du es dann z.B. an versand.php weiterleiten möchtest, machst du das dann mit:
                          PHP-Code:
                          <?
                          // alles in Session gespeichert, alles OK....
                          header('Location: versende.php?'.session_name().'='.session_id());
                          exit();
                          ?>
                          das also ganz zum schluss, wenn alle Prüfungen abgeschlossen sind.
                          auch ein Forum (PHP)

                          Kommentar


                          • #14
                            Ich hab Folgendes gemacht:
                            PHP-Code:
                            <?
                            if(isset($_POST['HOUSE']))
                            {
                                foreach($_POST as $key => $value)
                                { 
                                    $_SESSION[$key] = $value;
                                }
                            }
                            else if(isset($_POST['SAVE']))
                            {
                                header("Location: index.php?section=neuer_eintrag&test=update&PHPSESSID=".session_id());
                            }
                            ?>
                            Code:
                            <form name="FORMULAR" action="index.php?section=neuer_eintrag" target="_self" method="post">
                            Wenn ich jetzt auf den SAVE Button klicke, dann wird zwar die Seite wieder aufgerufen (verarbeitung findet auf der Seite statt) aber es wird nichts gespeichert..

                            Wie verwende ich header() richtig?
                            Was muss ich da reinschreiben, damit es klappt?

                            Kommentar


                            • #15
                              du willst also, wenn der Button HOUSE geklickt wurde, die Daten speichern, wenn der Button SAVE geklickt wurde einfach nur an ne andere Seite weiterleiten?

                              Ich denke mal, das bei HOUSE => abrechen ist?
                              Und SAVE in Session speichern und weiterleiten?

                              PHP-Code:
                              <?
                              if(isset($_POST['HOUSE']))
                                {
                                   // Leite mit header zur Startseite:
                                   header("Location: startseite.php");
                                   exit();
                                }
                              // wenn Daten gespeichert werden soll (in Session und dann zur anderen Seite weiterleiten).
                              else if(isset($_POST['SAVE']))
                                {
                                  foreach($_POST as $key => $value)
                                    {
                                       $_SESSION[$key] = $value;
                                  }
                                  header("Location: index.php?section=neuer_eintrag&test=update&PHPSESSID=".session_id());
                                  exit();
                                }
                              ?>
                              Bis Freitag, vielleicht funkt es ja, so wie du es willst.
                              auch ein Forum (PHP)

                              Kommentar

                              Lädt...
                              X