Formular erstellen

In diesem php-Tutorial erkläre ich euch wie man ein eigenes Formular mit php erstellt. Grundlage dafür sind Tutorials von Giatu, ich habe jedoch einige Funktionen zusammengefasst und hinzugefügt. Ich nutze im Formular der Übersichtlichkeit halber eine Tabelle.

Hier haben wir zunächst einmal ein einfaches Formular in einer Tabelle.

 <form action="Gesendet.php" method="post">

 <table width="85%">
 <tr><td>Name: </td><td><input type="text" name="name"> </td>
  <td>Email:</td><td><input type="text" name="email"></td></tr>

 <tr><td>Homepage:</td><td><input type="text" name="homepage" value="http://"</td>
  <td>Betreff : </td><td><input type="text" name="betreff"></td></tr>

 <tr><td colspan="4"><textarea name="Nachricht" cols="60" rows="3"></textarea></td></tr>
 <tr><td colspan="4"><input type="submit" value="abschicken" name="submit"><input type="reset" name="reset" value="löschen"></td></tr>
 </table>

<?php
 if (!empty($_POST['email'])) {
  $mailbody = $_POST['homepage'] . "\n\n";
  $mailbody .= $_POST['name'] . " schrieb\n\n";
  $mailbody .= $_POST['kontakt'];
  $mailbody = stripslashes($mailbody);
  $betreff = $_POST['betreff'];
  $email = $_POST['email'];
   if ( mail("muster@mustermann.de", "$betreff", $mailbody, "FROM: $email")) {
    echo "<br>Die Nachricht wurde erfolgreich gesendet!<br>";
  } else {
    echo "<br>Sorry die Nachricht konnte nicht gesendet werden!<br>";
  }
 }
?>

Die Seite Gesendet.php könnt ihr natürlich durch die Seite ersetzen, die nach erfolgreichem Senden angezeigt werden soll. Soll die selbe Seite angezeigt werden mit einem Text "Die Nachricht wurde erfolgreich gesendet!" (oder eben nicht), so gebt ihr einfach die Seite an, die euer Formular hat (bsp. formular.php).
Das "value=http://" bei der Homepage erzeugt von vorneherein das http:// im Feld, sodass eure Besucher nur noch die www-Adresse eingeben müssen. Wenn ihr also auch bei anderen Felder etwas vordefinieren wollt, müsst ihr einfach eine value setzen.
Die beiden input types sind die zwei Buttons für "abschicken" und "reseten" (also eingegebene Felder löschen). Wenn ihr die value ändert, ändert sich auch der Text auf den Buttons.
Vergesst nicht im php Code eure Email-Adresse bei "muster@mustermann.de" zu ändern!

Sehr hilfreich ist es bestimmte Felder zu Pflichtfeldern zu machen. Dies funktioniert mit Hilfe eines kleinen Javascripts. Denkt daran, dass Javascripts immer in den head Bereich eurer Seite müssen.

<script language="JavaScript">
 <!--
 function Pruefen()
 {
 if(document.Register.name.value != "" && document.Register.email.value != "" && document.Register.betreff.value) { // Bedingungen
 return true;
 } else {
 alert("Du hast nicht alle notwendigen Felder ausgefüllt!"); // Fehlermeldung
 return false;
 }
 }
 //-->
</script>

<form action="Gesendet.php" method="post" onSubmit="return Pruefen()" name="Register">

 <table width="85%">
 <tr><td>Name: </td><td><input type="text" name="name"> </td>
  <td>Email:</td><td><input type="text" name="email"></td></tr>

 <tr><td>Homepage:</td><td><input type="text" name="homepage" value="http://"</td>
  <td>Betreff : </td><td><input type="text" name="betreff"></td></tr>

 <tr><td colspan="4"><textarea name="Nachricht" cols="60" rows="3"></textarea></td></tr>
 <tr><td colspan="4"><input type="submit" value="abschicken" name="submit"><input type="reset" name="reset" value="löschen"></td></tr>
 </table>

<?php
 if (!empty($_POST['email'])) {
  $mailbody = $_POST['homepage'] . "\n\n";
  $mailbody .= $_POST['name'] . " schrieb\n\n";
  $mailbody .= $_POST['kontakt'];
  $mailbody = stripslashes($mailbody);
  $betreff = $_POST['betreff'];
  $email = $_POST['email'];
   if ( mail("muster@mustermann.de", "$betreff", $mailbody, "FROM: $email")) {
    echo "<br>Die Nachricht wurde erfolgreich gesendet!<br>";
  } else {
    echo "<br>Sorry die Nachricht konnte nicht gesendet werden!<br>";
  }
 }
?>

In diesem Beispiel müssen die Felder Name, Email und Betreff ausgefüllt worden sein. Folgende Zeile definiert die Bedingungen.

Möchtet ihr nur ein Feld als Pfichtfeld markieren, so reicht bsp. beim Namen:

Ansonsten müsst ihr immer noch != "" && als "und-Zeichen" setzen. Achtet aber auch darauf, dass eurer Feld und eure Bedingung den selben Namen haben! Fehlermeldungen werden als Popup gemeldet.

Ein Beispiel wie das Formular dann aussehen kann findet ihr hier: klick. Dort könnt ihr auch die Pflichtfelder testen, nur abschicken geht nicht (bzw. es wird nicht versendet).