+ Antworten
Ergebnis 1 bis 8 von 8

Thema: [html] Formular-Übergabe teilweise leer

  1. #1
    Wohnt hier Avatar von hermione
    Registriert seit
    31.01.2005
    Alter
    30
    Beiträge
    3.068
    Bedankte sich
    64
    Erhielt 1.025 Danksagungen
    in 950 Beiträgen

    Standard [html] Formular-Übergabe teilweise leer

    Ich habe ein Problem mit der Datenübergabe in einem Formular. Das Formular ist mehrstufig, aber nur beim Schritt von der 1. Eingabe zur 2. Eingabe werden teilweise nicht alle Werte übergeben. Dieses konnte ich selbst noch nicht beobachten, habe aber von mehreren Benutzern dieses Phänomen beschrieben bekommen. Dann habe ich eingebaut, dass automatisch eine Email geschickt wird, wenn das Problem auftritt. Dort habe ich herausgefunden, dass es nicht Browserabhängig ist (IE8 und FF 3.6.8, XP und Vista). Es sollen Personenanzahl, Plz, Flughafen und Stadt übergeben werden, bei den Fehlerfällen kommt aber nur die Plz und bei der Stadt eine 0. Die anderen Werte sind leer.
    Mein Formular sieht so aus:
    Code:
    <form autocomplete="off" name="F" method="post" action="formular.php?task=preis" onsubmit="return checkFormStart();">
    
    
    <div id="PLZId">PLZ:
        <input name="PLZ" size="5" maxlength="5" onkeyup="CountPLZ(this.value)" type="text">
    </div>
    
    <div id="FlughafenId">
    <div id="Stadt">
    <input name="AuswahlStadt" value="Dortmund" type="hidden">Stadt: Dortmund</div>
    <div id="Flughafen">Flughafen: 
    <select name="AuswahlFlughafen" size="1">
    <option value="Flughafen">Flughafen</option>
    <option value="Dortmund">Dortmund</option>
    <option value="Düsseldorf">Düsseldorf</option>
    </select>
    </div><
    div id="AnzahlPersonenId">Anzahl Personen:
        <select name="AnzahlPersonen" size="1">
            <option value="0">-</option>
            <option value="1">1</option>
            <option value="2">2</option>
        </select>
    </div>
    <input value="zur Preisberechnung" class="activity-button" type="submit"></div>
    </form>
    Und die Auswertung geschieht so:
    Code:
    case 'preis':
    
    $_SESSION['AuswahlFlughafen'] = $_POST['AuswahlFlughafen'];
    $_SESSION['AuswahlStadt'] = $_POST['AuswahlStadt'];
    $_SESSION['AnzahlPersonen'] = $_POST['AnzahlPersonen'];
    $_SESSION['PLZ'] = $_POST['PLZ'];
    
    
    $v=$_POST['AuswahlFlughafen'];
    $w=$_POST['PLZ'];
    $x=$_POST['AnzahlPersonen'];
    
    if (empty($_POST['AuswahlFlughafen'])){
    //******************************//
    $mail_empfaenger="xxx";
    $mail_absender="xxx";
    $betreff="Fehlermail";
    $text1="Fehler\n"
    ."\nBrowser: ".$_SERVER["HTTP_USER_AGENT"]
    ."\nAnzahl: ".$_POST['AnzahlPersonen']
    ."\nPlz: ". $_POST['PLZ']
    ."\nFlughafen: ".$_POST['AuswahlFlughafen']
    ."\nStadt: ".$_POST['AuswahlStadt']
    ."\n";
    
    mail($mail_empfaenger, $betreff, $text1,"from:$mail_absender");
    //***********************************//
    }
    Geht natürlich noch weiter, aber bis dahin sind die Werte ja schon nicht mehr da. Hat das irgendjemand schon mal gehabt? Bin echt ratlos.

  2. #2
    Neu an Board
    Registriert seit
    12.08.2010
    Ort
    Köln
    Beiträge
    4
    Bedankte sich
    1
    1 Danksagung in 1 Beitrag

    Standard

    Also soweit ich weiß fehlt da überhaupt der befehl zum absenden.
    Es ist kein name vom Submit definiert.
    Ich mach es immer mit:
    PHP-Code:
    <?php
     
    if(isset($_POST['submit'])){
     ...
     }
    ?>

  3. Erhielt Danksagungen von:


  4. #3
    Wohnt hier Avatar von hermione
    Registriert seit
    31.01.2005
    Alter
    30
    Beiträge
    3.068
    Bedankte sich
    64
    Erhielt 1.025 Danksagungen
    in 950 Beiträgen

    Standard

    was fehlt? also ich hab nen submit-button, und was er tun soll, steht ja im form-tag.

    das seltsame ist ja auch, meistens funktioniert es. bei mir hats bisher immer funktioniert. nur halt manchmal übergibt er nichts. kann es sein, dass es an der session liege, die ich öffne? ich werd es heute abend mal umbauen, ohne session.

  5. #4
    Neu an Board
    Registriert seit
    02.09.2010
    Beiträge
    23
    Bedankte sich
    0
    Erhielt 4 Danksagungen
    in 4 Beiträgen

    Standard

    Moinsen.

    - Session wird gestartet bzw. dadurch fortgesetzt? (nicht ersichtlich - nur Kontrollfrage ^^)
    - SessionID vor Absenden/nach Absenden?
    - Inhalt von $_POST auf Seite 2 (var_dump!)

    Jeder macht es anders, aber setze doch mal für die Input-Tags ein value mit einem beliebigen Wert - zwecks Kontrolle, ob die mitkommen würden.

    Weiterhin solltest dies auch für die option-Tags probieren - also "selected" (bzw. XHTML-konform).

    Und: Das "break" vom case-Select ist aber da, oder?! ^^

  6. Erhielt Danksagungen von:


  7. #5
    Wohnt hier Avatar von hermione
    Registriert seit
    31.01.2005
    Alter
    30
    Beiträge
    3.068
    Bedankte sich
    64
    Erhielt 1.025 Danksagungen
    in 950 Beiträgen

    Standard

    session wird gestartet:
    PHP-Code:
    <?php 
    $task 
    $_GET["task"];
    switch (
    $task) {
    case 
    'preis':
    case 
    'flugdaten':
    case 
    'persdaten':
    case 
    'mailer':

    session_start();

    break;
    }
    ?>
    beim der ersten formularseite (task=default) noch nicht, dann aber auf jeder folgeseite.

    sessionid müsste ich mal ausgeben lassen, da mach ich so nichts mit.

    in der variable der postleitzahl steht auch was drin, nur nicht in den anderen feldern.

    ich hab das ganze letzte tage mal umgebaut ohne session, und heute bekam ich wieder eine fehlermail. also liegt es wohl nicht an der session. extrem seltsam... und ich konnte es bei mir noch nicht beobachten

    und das break vom case select ist auch da. bei allen dingern.

  8. #6
    Neu an Board
    Registriert seit
    02.09.2010
    Beiträge
    23
    Bedankte sich
    0
    Erhielt 4 Danksagungen
    in 4 Beiträgen

    Standard

    Hi erneut,

    - "task" ist definitiv ein String, ja? (kein Integer or equal ^^)
    - das "break" je "case" fehlt mir hier wirklich ... ^^
    - "default" aber auch (denn da würde er dann reingehen, wenn kein case zutrifft!!)

    Ja, die Info mit der SessionID wäre nützlich ... ich kann mich dunkel an etwas ähnliches erinnern, wo aus einem nicht erkennbaren Grund die SessionID zu jedem Site-Aufruf verändert wurde. Es riecht ein wenig danach ... *hm* ... frag mich aber nicht mehr, bei welchem Projekt das war ... *uff* (locker zwei Jahre her)

    Lass Dir mal alles anzeigen, was via GET kommt ... evtl. heißt noch einer "task"? Hier reicht ebenfalls ein "var_dump($_GET);" ...

    SessionID prüfen ... vorher und nachher!!

    ... und mal einen echo/print als "defaul" in der case-Abfrage ... wäre doch gelacht, wenn man den nicht lokalisiert.

  9. Erhielt Danksagungen von:


  10. #7
    Wohnt hier Avatar von hermione
    Registriert seit
    31.01.2005
    Alter
    30
    Beiträge
    3.068
    Bedankte sich
    64
    Erhielt 1.025 Danksagungen
    in 950 Beiträgen

    Standard

    also ich bin mittlerweile schon wieder weitergekommen
    es kommt zwar ab und an noch ne fehlermeldung, aber ich schieb die im moment auf seiten, die noch bei leuten im cache liegen. muss ich glaub ich noch mal ein ablaufdatum draufpacken, damit das auch immer neu lädt.
    es kam mir letzte tage, dass die plz ja direkt am anfang eingegeben wird, alle anderen felder werden per ajax nachgeladen (inhalte kommen teilweise aus ner csv, je nach plz-eingabe). also wird im fehlerfall evtl. gar nichts nachgeladen? hab dann testweise mal javascript ausgeschaltet, und wenn man dann nach der plz-eingabe auf enter drückt, wird das formular abgeschickt, halt nur mit plz, da ja noch nichts anderes nachgeladen wurde.
    habe jetzt eingebaut, dass eine warnung kommt, dass kein javascript eingeschaltet ist.

    eigentlich kann es nur das gewesen sein... würde auch dazu passen, dass bei "ungültigen" plz normalerweise ein anderes formular kommt, aber es teilweise auch zum fehler kam wie bei gültigen plz.

    also falls noch weiter der fehler auftaucht, schick ich dir mal das ganze skript...
    wie gesagt, habs mittlerweile ohne session gemacht. daran lags wohl trotzdem nicht.
    trotzdem danke für deine überlegungen!

  11. #8
    Wohnt hier Avatar von hermione
    Registriert seit
    31.01.2005
    Alter
    30
    Beiträge
    3.068
    Bedankte sich
    64
    Erhielt 1.025 Danksagungen
    in 950 Beiträgen

    Standard

    so, nächste fehlerquelle ausgeschaltet
    die leute sind ja alle so ungeduldig, geben ihre plz ein und drücken ganz schnell enter, weil ja sonst erst mal nichts im formular ist. da das ajax noch nichts nachladen konnte in der kurzen zeit, wird mit dem enter das formular abgeschickt, und das prüfen per js war noch nicht hart genug, und somit gehts auf die nächste seite.
    muss man halt prüfen, ob schon alle felder nachgeladen wurden, ansonsten wird eine warnung ausgegeben, dass der benutzer kurz warten soll.

    so, jetzt hab ich noch ein kleines problem:
    wenn man jetzt auf der 2. formularseite ist, und den back-button des browsers benutzt, passiert folgendes:

    beim firefox: die eingegebene plz wird vom ff gelöscht, die ajax-felder bleiben allerdings stehen. wie krieg ich das jetzt hin, dass die seite quasi neu geladen wird, damit das plz-feld leer ist und der ajax-bereich auch weg ist?

    beim IE: die eingegebene plz ist noch da, die ajax-felder auch. damit könnte ich leben, obwohl es auch besser wäre, alles wäre wieder auf anfang.

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein