Ankündigung

Einklappen
Keine Ankündigung bisher.

leeres Formular

Einklappen

Neue Werbung 2019

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

  • Gast-Avatar
    Ein Gast erstellte das Thema leeres Formular.

    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!

  • Gast-Avatar
    Ein Gast antwortete
    Sorry, mein Fehler, der Code lautet natürlich so:
    PHP-Code:
    <?
    if(isset($_POST['SAVE']))
    {
        echo "warum???";
        foreach($_POST as $key => $value)
        { 
            $_SESSION[$key] = $value;
        }
        header("Location: index.php?section=neuer_eintrag&test=update&PHPSESSID=".session_id());
    }
    else if(isset($_POST['HOUSE']))
    {
        foreach($_POST as $key => $value)
        { 
            $_SESSION[$key] = $value;
        }
    }
    ?>
    --> wenn man auf HOUSE klickt sollen die Werte einfach nur zwischengespeichert werden, weil ich sie dann später wieder brauche
    --> wenn man auf SAVE klickt sollen die Werte auch gespeichert werden und dann die VERARBEITUNGSSEITE aufgerufen werden, und genau daran scheitert's!
    die Seite wird NICHT aufgerufen, egal welche Seite ich da eingebe.
    Woran liegt das?

    Noch eine Frage:
    Wie kann ich die Variablen in der Session wieder leeren / löschen, damit beim nächsten mal eingeben nicht immer noch die Daten vom letzten mal drin sind?

    Einen Kommentar schreiben:


  • schifti
    antwortet
    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.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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?

    Einen Kommentar schreiben:


  • schifti
    antwortet
    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.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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?

    Einen Kommentar schreiben:


  • schifti
    antwortet
    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.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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>

    Einen Kommentar schreiben:


  • schifti
    antwortet
    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" ....>';
    ?>

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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?

    Einen Kommentar schreiben:


  • schifti
    antwortet
    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>

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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?

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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?

    Einen Kommentar schreiben:


  • schifti
    antwortet
    wenn du es richtig machst, Ja.

    schau mal hier:
    http://forum.developers-guide.net/thread29.html

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Hm, und $_SESSION geht immer, egal was der User im Browser aktiviert hat oder nicht?

    Einen Kommentar schreiben:

Lädt...
X