• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Formulardaten werde einfach nicht übertragen

jobo218

Mitglied
Bin am verzweifeln weil ich mittlerweile schon seit fast 2-3 h versuche, ein ganz simples Kontaktformular zu erstellen.

Habe auch schon ewig gesucht und eigentlich ist der Code ja richtig, denke ich, aber es klappt irgendwie doch nicht.. Sehe ich den Wald vor lauter Bäumen nicht?..

Mein PHP (in der Datei kontakt.php im gleichen Verzeichnis):
PHP:
<?php

  $name = $_POST['name'];
  $email = $_POST['email'];
  $nachricht = $_POST['nachricht'];
  $grund = $_POST['grund'];

  $an = '[email protected]';
  $betreff = "Kontaktformularnachricht | $grund | $name ";
  mail($an, $betreff, $nachricht, 'From:' . $email);

?>

Und mein Formular:
HTML:
<form method="post" action="kontakt.php">
<table style="border-spacing: 10px;" class="kontaktformular" border="0" cellpadding="4" cellspacing="4">
    <tr>
      <td style="width: 60px; background: #e6e6e6; padding: 10px;" align="right">Dein Name:</td>
      <td><input style="height: 30px;" name="name" type="text"></td>
    </tr>
    <tr>
      <td style="width: 60px; background: #e6e6e6; padding: 10px;" align="right">Emailadresse:</td>
      <td><input style="height: 30px;" name="email" type="text"></td>
    </tr>
    <tr>
      <td style="width: 60px; background: #e6e6e6; padding: 10px;" align="right">Deine&nbsp; Nachricht:</td>
      <td><textarea style="height: 220px;" name="nachricht"></textarea></td>
    </tr>
    <tr>
      <td style="width: 60px; background: #e6e6e6; padding: 10px;" align="right">Bitte auswählen</td>
      <td><select name="grund" style="width: 300px; height: 30px; background: #e6e6e6;">
      <option>Allgemeine Kontaktaufnahme</option>
      <option>Booking</option>
      </select>
      </td>
    </tr>
    <tr><td>&nbsp;</td><td><input style="margin-top: 15px;" type="submit" name="submit" value=" Abschicken "/></td>
    </tr>
</table>
</form>

Ich wäre euch sehr dankbar, wenn ihr mir weiterhelfen könntet.
 
Werbung:
aber es klappt irgendwie doch nicht..
Das ist keine Problembeschreibung, mit der wir etwas anfangen können.

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.
 
Danke für die schnelle Antwort.

Leider kann ich mit den meisten Ihrer Hinweise nichts anfangen, da ich Anfänger bin und mit mit PHP null auskenne.

Ich bräuchte einfach nur die Übermittlung einer Textnachricht durch das Formular.

Ist der obige Code denn so korrekt?

Ich habe ja keine weitere Skripte im Einsatz sondern nur die HTML und PHP Datei.
 
Werbung:
Gut muss er ja nicht unbedingt sein.

Ich will nach ewigem Herumsuchen und Zusammenstückeln von Code-Snippets halt nun einfach einmal auch ein positives Ergebnis bekommen.. :(

Ja, ich habe beide Dateien auf meinem Server hochgeladen, PHP steht mir zur Verfügung und läuft auch alles problemlos.(Wordpress und Forensoftware läuft auch)

Ich weiß einfach nicht mehr, was ich noch tun soll. Meiner Ansicht nach werden die Daten ja mit name="xx" ausgegeben und dann an die PHP-Datei weitergegeben. Die URL stimmt, "POST" als Methode müsste ja auch richtig sein. Dann soll einfach eine der Variablen per Mail geschickt werden, wenn das mal funktionieren würde, könnte ich mir den Rest bestimmt auch wieder zusammenbasteln.

Aber nicht einmal der PHP-Einzeiler mit mail() und einer Variablen funktioniert. :(

Das Problem liegt daran, dass ich keine Email erhalte...
 
Was passiert denn hiermit:
PHP:
<?php
  error_reporting(E_ALL);
  ini_set("display_errors", true);
 
  $name = $_POST['name'];
  $email = $_POST['email'];
  $nachricht = $_POST['nachricht'];
  $grund = $_POST['grund'];
  $an = '[email protected]';
  $betreff = "Kontaktformularnachricht | $grund | $name ";
  if (mail($an, $betreff, $nachricht, 'From:' . $email))
    echo "Mail ist raus, heißt aber noch nichts";
  else
    echo "Problem mit der Mail-Funktion";
?>
 
Werbung:
Die Ausgabe ist "Mail ist raus"...

Ich denke, dass es nur an der Übermittlung zwischen der HTML- und PHP-Datei scheitert.

Ich habe den PHP Code in die PHP Datei eingefügt und dann das Formular ausgefüllt, es ist aber nichts passiert.

Nur wenn ich die PHP-Datei richtig aufrufe, kommt die Meldung "Mail ist raus,.." und es kommt auch eine leere Email an.

Kann es evtl. daran liegen, dass sich das Kontaktformular in einem Lightbox-DIV befindet, das standardmäßig display:none hat und nur beim Klick auf einen Link geföffnet wird?

Das Problem hatte ich nämlich auch schon mit dem HTML 5 Audio Tag, der wurde darin irgendwie nicht verarbeitet..

EDIT: Ich habe gerade einmal das Formular außerhalb des DIVs, das als Lightbox geöffnet wird, platziert und es funktioniert nun. Ich verwende die "Featherlight" Lightbox. Diese blockiert anscheinend irgendwie das Öffnen der PHP-Datei, denn es erscheint auch gar kein Fenster, wenn man auf Submit klickt.
 
Zuletzt bearbeitet:
Neuer Versuch:
PHP:
<?php
  error_reporting(E_ALL);
  ini_set("display_errors", true);
  echo "<pre>";
  print_r($_POST);
  echo "</pre><br /><br />";

  if (isset($_POST['name']))
  {
     $name = $_POST['name'];
     $email = $_POST['email'];
     $nachricht = $_POST['nachricht'];
     $grund = $_POST['grund'];
     $an = '[email protected]';
     $betreff = "Kontaktformularnachricht | $grund | $name ";
     if (mail($an, $betreff, $nachricht, 'From:' . $email))
       echo "Mail ist raus, heißt aber noch nichts";
     else
       echo "Problem mit der Mail-Funktion";
   }
   else
      echo "Ups, da stimmt was nicht";
?>
 
Ausgabe:
Array
(
)

Ups, da stimmt was nicht

Ich habe gerade einmal das Formular außerhalb des DIVs, das als Lightbox geöffnet wird, platziert und es funktioniert nun. Es öffnet sich die PHP Datei und eine Email wird verschickt.
Ich verwende die "Featherlight" Lightbox. Diese blockiert anscheinend irgendwie das Öffnen der PHP-Datei, denn es erscheint auch gar kein Fenster, wenn man auf Submit klickt..
 
Werbung:
Zurück
Oben