+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 15 von 21

Thema: Formularfelder nach Absenden löschen

  1. #1
    TP-Specialist Paco macht sich hier sehr viel Mühe Avatar von Paco
    Registriert seit
    Sep 2001
    Ort
    Rhein-Main
    Beiträge
    2.296

    Formularfelder nach Absenden löschen

    Hallo,

    ich habe ein Formular, das z.b. aus 20 Eingabefeldern besteht (alles Pflichtfelder).
    Wenn der Kunde nun alles ausfüllt, und würde ein Pflichtfeld übersehen und auf "absenden" drücken - wären alle Daten wieder weg und er müßte alles neu ausfüllen. Deshalb habe im Value einen kleinen "Merker" eingebaut, der dann trotzdem die Daten im Formular behält.

    Nun würde ich aber gerne, nachdem er alles korrekt ausgefüllt und abgesendet hat - wieder alle Formularfelder leer haben!

    Wie bewerkstellige ich das? Hat da jemand eine Idee?

    Danke und gruß

  2. #2
    TP-Veteran Nicolas hilft, wo's geht Nicolas hilft, wo's geht Nicolas hilft, wo's geht Avatar von Nicolas
    Registriert seit
    Nov 2004
    Ort
    nähe Nürnberg
    Beiträge
    1.199
    Er wird nach dem absenden also wieder auf die Formularseite geleitet?
    Dann würde ich beim Script, dass die Daten versendet eine Schleife einbauen:
    PHP-Code:
    if(mail gesendet){
    $variablen 'Neu definieren';
    }else{
    echo 
    "Daten konnten leider nicht gesendet werden!";


  3. #3
    TP-Insider skipperjan ist ein richtiges Arbeitstier - DANKE skipperjan ist ein richtiges Arbeitstier - DANKE skipperjan ist ein richtiges Arbeitstier - DANKE skipperjan ist ein richtiges Arbeitstier - DANKE skipperjan ist ein richtiges Arbeitstier - DANKE skipperjan ist ein richtiges Arbeitstier - DANKE Avatar von skipperjan
    Registriert seit
    Jan 2005
    Ort
    Düsseldorf
    Beiträge
    981

    Session?

    Du könntest einfach alle Variablen in die Session packen, so lange es nicht korrekt ist, bleiben sie dort.

    Hat der User alles ausgefüllt, deine Validierung also erfolgreich durchlaufen, entweder per unregister die jeweiligen Variablen plätten oder einfach die ganze Session in die Tonne hauen.

    Wie hast du deine "Merker" umgesetzt? Als array? Dann wäre es noch leichter, $Merler_array = array() und schon isses wieder leer.

    So long,
    skip
    Chenaski - Klamotten designed by Pete
    USE - nicht immer nur mit Stars and Stripes rumlaufen!

    Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....

  4. #4
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    Du kannst auch mit unset() arbeiten. Nach dem Absenden und erfolgreichem validieren genügt ein unset($_POST), vorrausgesetzt Du füllst die Felder mit den $_POST-Variablen aus.


    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer


  5. #5
    TP-Insider skipperjan ist ein richtiges Arbeitstier - DANKE skipperjan ist ein richtiges Arbeitstier - DANKE skipperjan ist ein richtiges Arbeitstier - DANKE skipperjan ist ein richtiges Arbeitstier - DANKE skipperjan ist ein richtiges Arbeitstier - DANKE skipperjan ist ein richtiges Arbeitstier - DANKE Avatar von skipperjan
    Registriert seit
    Jan 2005
    Ort
    Düsseldorf
    Beiträge
    981

    So gehts.....

    Eine etwas betagtere Lösung, die ich aber auch gerne mal verwende, wenn ohne große Logik etwas überprüft werden muss, ist die hier.

    Klappt einfach und ist easy zu durchschauen.
    PHP-Code:
    <?php
    if (array_key_exists('delete',$_POST)){
        
    $_POST=array();
    }
    if (
    array_key_exists('senden',$_POST)){
        
    $i=0;
        while(list(
    $name,$wert) = each($_POST)){
            
    $value[$i]=$wert;
            
    $i++;
            if(empty(
    $wert)) $delete.="bitte füllen Sie das Feld $name aus!<br>";
        }
        
    $delete.='<br><br>
            <form name="form2" method="POST" action="'
    .$_SERVER['PHP_SELF'].'">
            <input type="submit" name="delete" value="Und wieder leer">'
    ;
    }
    else 
    $delete="";
    $prolog='
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
        
        <html>
        <head>
            <title>Superformularding</title>
        </head>
        
        <body>
        <h1>Superformularding!</h1>
        <br>
        <br>
        <form name="form" method="POST" action="'
    .$_SERVER['PHP_SELF'].'">
        Name:<input type="text" name="name" value="'
    .$value[0].'">
        <br>
        Vorname:<input type="text" name="vorname" value="'
    .$value[1].'">
        <br>
        Strasse:<input type="text" name="strasse" value="'
    .$value[2].'">
        <br>
        Ort:<input type="text" name="ort" value="'
    .$value[3].'">
        <br>
        <input type="submit" name="senden" value="Hau weg den Mist"><br><br>'
    ;

    $abspann='
        </body>
        </html>
        '
    ;
    echo 
    $prolog;
    echo 
    $delete;
    echo 
    $abspann;
    ?>
    Vielleicht hilfts dir ja,

    ich mach jetzt Feierabend,

    so long,

    skip
    Chenaski - Klamotten designed by Pete
    USE - nicht immer nur mit Stars and Stripes rumlaufen!

    Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....

  6. #6
    TP-Specialist Paco macht sich hier sehr viel Mühe Avatar von Paco
    Registriert seit
    Sep 2001
    Ort
    Rhein-Main
    Beiträge
    2.296
    hmm, ich komme noch nicht klar damit....


    PHP-Code:
    $name = $_POST[name] ;

    if(isset($submit))         
    {
    $error = 0; //kleiner Fehlermerker
            

    if ($name == "")
    {
    $namex = "<font color=\"#ff0000\" size=\"-2\"><b>&nbsp;&nbsp;Name vergessen!</b></font>";
    $error=1;
    }
    else
    {
    $error_name = $name;
    }

    <div id="name" class="input">Name:<? echo $namex ?></div>
    <div id="name_input" class="name"><input name="name" value="<? echo $name ?>" /></div>
    Ja, einmal zeigt er dass vergessen wurde das Feld auszufüllen und im value ist der "merker", damit man nicht alles neu ausfüllen muss! Wo muss ich jetzt mit dem Löschen des Feldinhaltes nach erfolgreichen Versenden arbeiten?


  7. #7
    TP-Insider skipperjan ist ein richtiges Arbeitstier - DANKE skipperjan ist ein richtiges Arbeitstier - DANKE skipperjan ist ein richtiges Arbeitstier - DANKE skipperjan ist ein richtiges Arbeitstier - DANKE skipperjan ist ein richtiges Arbeitstier - DANKE skipperjan ist ein richtiges Arbeitstier - DANKE Avatar von skipperjan
    Registriert seit
    Jan 2005
    Ort
    Düsseldorf
    Beiträge
    981

    Lass die Zuweisung weg...

    ...also du hast 20 Felder wie du sagst und scheinst mit 20 einzelnen Schleifen die jeweiligen Felder zu überprüfen.

    Ich habe dir einen etwas anderen Ansatz gezeigt. Aber OK, da du den Namen einer Variable zuweist um ihn im Formular bei einem Fehler wieder anzeigen zu können, wirst du also für den Fall eines korrekt ausgefüllten Formulares jede einzelne Variable zurücksetzen müssen.

    20 Felder --> 20 Variablen --> 20 mal unset, unset($var)

    Das würde ich mir überlegen, kann man so machen, ist aber eigentlich Quatsch. Sieh dir mal das kleine Formular von mir an, probier es mal aus, dem kleinen Script ist es egal ob es sich um hundert oder 20 Variablen handelt, du kannst das im Prinzip ein zu eins für dein Form übernehmen und spoarst dir eine Menge Aufwand.

    Ansonsten, direkt vor der Formularausgabe fragen if($error==0) {
    unset($name);
    unset(...)
    usw.
    }

    Aber wie gesagt, das geht auch eleganter,

    so long,

    skip
    Chenaski - Klamotten designed by Pete
    USE - nicht immer nur mit Stars and Stripes rumlaufen!

    Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....

  8. #8
    TP-Specialist Paco macht sich hier sehr viel Mühe Avatar von Paco
    Registriert seit
    Sep 2001
    Ort
    Rhein-Main
    Beiträge
    2.296
    Bestimmt geht immer alles eleganter - aber mein Script verstehe ich wenigstens Bin sehr frisch in php, wenn verstehst...

    Aber danke, nun hat es geklappt

  9. #9
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    $_POST[name]

    sowas solltest Du nie machen, PHP denkt, name w&#228;re eine Konstante

    Richtig: $_POST['name']


    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer


  10. #10
    TP-Specialist Paco macht sich hier sehr viel Mühe Avatar von Paco
    Registriert seit
    Sep 2001
    Ort
    Rhein-Main
    Beiträge
    2.296
    Merke ich mir...

  11. #11
    TP-Specialist mike bringt sich richtig ein Avatar von mike
    Registriert seit
    Jan 2002
    Ort
    TP/Dynamik
    Beiträge
    2.876
    f&#252;r faule: mach nach dem erfolgreichen Absenden einen Redirect auf die gleiche Seite
    Gehelft? Hier kannst du dich bedanken.

    mike

  12. #12
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    mikes Vorschlag ist der beste, damit verhindert man auch doppeltes Eintragen durch F5


    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer


  13. #13
    TP-Specialist Paco macht sich hier sehr viel Mühe Avatar von Paco
    Registriert seit
    Sep 2001
    Ort
    Rhein-Main
    Beiträge
    2.296
    Zitat Zitat von mike
    für faule: mach nach dem erfolgreichen Absenden einen Redirect auf die gleiche Seite
    Und für Dumme?
    ich verstehe es nämlich nicht?!

  14. #14
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    einfach nach dem Eintragen in die DB ein

    header("location:datei.php");

    Vorher d&#252;rfen keine echo-Ausgaben sein !


    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer


  15. #15
    TP-Specialist Paco macht sich hier sehr viel Mühe Avatar von Paco
    Registriert seit
    Sep 2001
    Ort
    Rhein-Main
    Beiträge
    2.296
    Das bedeutet ich muss nicht auf die "konstante" achten? Oder trotzdem alles mit $_POST['name'] und noch zusätzlich mit header("location:datei.php"); nach Eintrag in die Datenbank? Ihr müßt Geduld mit mir haben - bin noch nicht so firm mit php....

+ Antworten
Seite 1 von 2 1 2 LetzteLetzte

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51