Warum vergisst Formular ständig die eingegebenen Daten?

Diskutiere Warum vergisst Formular ständig die eingegebenen Daten? im PHP Forum im Bereich Programmierung; Hallo zusammen! Ich habe versucht, mit meinen verstaubten HTML- und PHP-Kenntnissen, die schon einige Jahre zurück liegen, ein Formular zu...
R

R3D3

Member
Beiträge
18
Punkte Reaktionen
0
Hallo zusammen! Ich habe versucht, mit meinen verstaubten HTML- und PHP-Kenntnissen, die schon einige Jahre zurück liegen, ein Formular zu erstellen.

Beim Aufrufen einer neuen Formularseite wird die Session ID übergeben, außerdem werden in Session-Variablen die übermittelten Formularfelder eingetragen.

Ich stelle fest, dass immer wieder Formularwerte fehlen und nicht übermittelt werden, ich suche aber schon Tagelang und finde keinen Fehler.

Ganz am Anfang der Seite verwende ich:
Code:
<?php
  
    // start session
    session_start();
?>

Auf der index.php wird zusätzlich noch alter Kram gelöscht mit:
Code:
<?php
   
    // start session
    session_start();

    // delete all (old) session variables
    session_unset();
?>

Die nächste Seite wird aufgerufen mit:
Code:
<form action="page_2.php?<?php echo SID ?>" method="post">

Auf der nächsten Seite speichere ich die Formularwerte in der Session:
Code:
<?php

    // start session
    session_start();

    // save variables and values from previous pages in session
    $_SESSION["user_firstname"] = $_POST["user_firstname"];
    $_SESSION["user_lastname"]  = $_POST["user_lastname"];
  
usw...

Ganz am Schluss auf der letzten Seite versende ich eine eMail:
Code:
<?php

    /* prepare email */
    $mailto_client = 'zensiert';
    $subject = 'Formular von ' . $_SESSION["user_firstname"];
    $header = 'From: zensiert';

    $message  = "Es wurde ein neues Formular ausgefüllt. Hier sind die Daten.\r\n\r\n";
  
    $message .= "SEITE 1, PERSÖNLICHE DATEN\r\n\r\n";

    $message .= "Vorname: "            . $_SESSION["user_firstname"] . "\r\n";
    $message .= "Nachname: "           . $_SESSION["user_lastname"] . "\r\n";
    usw... weitere Formularfelder...

    /* send email to client */
    mail($mailto_client,$subject,$message,$header);
?>

In der angekommenen eMail fehlen aber geschätzt die Hälfte der Formularwerte.

Was kann da sein? PHP-Errors sind keine hinterlegt.

Weitere Infos gerne!

LG!
 
S

scatello

Well-known member
Beiträge
370
Punkte Reaktionen
26
Mit den Bruchstücken von Quellcode kann dir niemand helfen. Und warum du Formulardaten in eriner Session speicherst, ist mir auch ein Rätsel.

Richtig debuggen
  1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
  2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
  3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
  4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
  5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
  6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
  7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
  8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
  9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
 
S

scatello

Well-known member
Beiträge
370
Punkte Reaktionen
26
Wofür brauchst du die Session-Variablen?
 
S

scatello

Well-known member
Beiträge
370
Punkte Reaktionen
26
Vielleicht solltest du dich mal mit einem "Affenformular" beschäftigen
 
R

R3D3

Member
Beiträge
18
Punkte Reaktionen
0
Ich habe den Fehler gefunden.

Hier die Lösung für die Nachwelt:

Ursprünglicher Code:
Code:
$message .= "Vegetarier: ";
if ($_POST["trifftzu_vegetarier" != ""]) { $message .= "angekreuzt"; }
Ausgabe in der E-Mail: Nichts. Leerer Bereich.

Neuer Code (Radiobuttons):
Code:
$message .= "Vegetarier: ";
if ($_POST["trifftzu_vegetarier"] == "on") { $message .= "angekreuzt"; }
Ausgabe in der E-Mail: "angekreuzt"

Und bei Textfeldern:
Code:
if(isset($_POST["zahl_wert"])) {
    $message .= ", Wert: " . $_POST["zahl_wert"];
}

LG!
 
Zuletzt bearbeitet:
S

scatello

Well-known member
Beiträge
370
Punkte Reaktionen
26
Dieser ganze Thread ist ein schlechter Witz! Von Anfang an zeigst du einen unvollständigen Quellcode und am Ende liegt es an einer Stelle, die man hier überhaupt nicht sehen konnte! :sneaky::sneaky:
 
R

R3D3

Member
Beiträge
18
Punkte Reaktionen
0
Es steht jedem Admin oder Verantwortlichen frei, das alles wieder zu löschen. DICH, scatello, merke ich mir ganz besonders ;-) Ist dir schon aufgefallen, dass du der einzige Beteiligte in diesem Thread bist? :p Hätte ich hunderte Zeilen Quellcode gepostet, die das Projekt umfasst, hätte es sicher auch wieder nicht gepasst und jemand hätte "das ist viel zu viel Quelltext" geschrieben...

"und am Ende liegt es an einer Stelle, die man hier überhaupt nicht sehen konnte!"

-> Woher soll ich denn bitte die Stelle schon vorher wissen, in der der Fehler auftaucht? Dann hätte ich mir den Thread sparen können du Schlaumeier und die entsprechende Stelle korrigieren können. Aber lass mich raten: DU hättest es nicht herausgefunden. Viel Lärm um nichts.
 
Zuletzt bearbeitet:
S

scatello

Well-known member
Beiträge
370
Punkte Reaktionen
26
Du hast uns Quellcode gezeigt, der mit dem Problem nichts zu tun hat. Ist das besser? Ich glaube nicht. Hier ein Bruchteil, da ein Bruchteil und wir können raten! Aber auf diese Lösung hätten wir selbst nicht mit raten kommen können, weil wir keine Ahnung von einem Radiobutton hatten. Wenn du nicht in der Lage bist, alle nötigen Informationen zu liefern, dann solltest du mal drüber nachdenken, ob du in einem Forum Fragen stellen solltest, denn so macht das überhaupt keinen Sinn.
 
R

R3D3

Member
Beiträge
18
Punkte Reaktionen
0
Geh mal wieder nach Hause zu deiner Mami. In Zukunft kümmern sich andere um meine Beiträge :)
 
R

R3D3

Member
Beiträge
18
Punkte Reaktionen
0
Dich hat niemand gefragt. Bist auf der Blockliste. Viel Spaß dort. ;-)
 
basti1012

basti1012

Well-known member
Beiträge
242
Punkte Reaktionen
18
Seit wann bist du denn "wir"? Außer dir war hier sonst niemand beteiligt.
Na ja, mitlesen tun viele, aber antworten nicht.
Ich konnte mit dem ersten Beitrag auch nicht viel anfangen und habe erstmal gewartet was noch so geschrieben wird.
 
Thema:

Warum vergisst Formular ständig die eingegebenen Daten?

Oben Unten