XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Serveradministration und serverseitige Scripte (http://xhtmlforum.de/forumdisplay.php?f=80)
-   -   PHP Kontaktformular funktioniert nicht wie es soll (http://xhtmlforum.de/showthread.php?t=53623)

bodoalbstadt 12.09.2008 22:18

PHP Kontaktformular funktioniert nicht wie es soll
 
Hallo Leute,

ich habe vor etwa einem Jahr für einen Kunden eine Homepage mit Kontaktformular erstellt, das einwandfrei funktioniert. Nun habe ich die Grundstruktur dieses Formulars genommen, um es bei einer anderen Homepage noch einmal zu verwenden, jedoch etwas abgewandelt.

Bei dem Formular soll geprüft werden, ob die Pflichtfelder ausgefüllt sind. Die bereits eingegeben Daten sollen an die nachfolgende Seite übergeben werden. Die Prüfung funktioniert einwandfrei, doch sind die Felder leider nach dem Absenden des Formulars leer, ganz gleich ob nun per POST oder GET, ob nun die Pflichtfelder ausgefüllt wurden oder nicht.

Vielleicht kann mir ja jemand helfen und mir sagen wo der Hase im Pfeffer liegt!?

Hier der Quellcode des Kontaktformulars:
Code:

  <?php
      $nameOK = true;
      $emailOK = true;
      $nachrichtOK = true;

      if (isset($_POST['submit_x']) && isset($_POST['submit_y'])) {
         
      $ausgabe = '';
      $fehler = '';

      if (isset($_POST['FormName']) && !is_array($_POST['FormName']) && $_POST['FormName'] != '') {
        $ausgabe .= 'Name : ' . htmlspecialchars($_POST['FormName']) . "\n";
      }
      else {
        $fehler .= '<span style="color:#C82725">Kein Name angegeben!</span><br />';
        $nameOK = false;
      }
     
      if (isset($_POST['FormStrasse']) && !is_array($_POST['FormStrasse']) && $_POST['FormStrasse'] != '') {
        $ausgabe .= 'Strasse : ' . htmlspecialchars($_POST['FormStrasse']) . "\n";
      }
     
      if (isset($_POST['FormOrt']) && !is_array($_POST['FormOrt']) && $_POST['FormOrt'] != '') {
        $ausgabe .= 'PLZ und Ort : ' . htmlspecialchars($_POST['FormOrt']) . "\n";
      }
     
      if (isset($_POST['FormEMail']) && !is_array($_POST['FormEMail']) && $_POST['FormEMail'] != '') {
        $ausgabe .= 'E-Mail : ' . htmlspecialchars($_POST['FormEMail']) . "\n";
      }
      else {
        $fehler .= '<span style="color:#C82725">Keine E-Mail angegeben!</span><br />';
        $emailOK = false;
      }
     
      if (isset($_POST['FormTelefon']) && !is_array($_POST['FormTelefon']) && $_POST['FormTelefon'] != '') {
        $ausgabe .= 'Telefon : ' . htmlspecialchars($_POST['FormTelefon']) . "\n";
      }
     
      if (isset($_POST['FormHandy']) && !is_array($_POST['FormHandy']) && $_POST['FormHandy'] != '') {
        $ausgabe .= 'Mobil : ' . htmlspecialchars($_POST['FormHandy']) . "\n";
      }
     
      if (isset($_POST['FormFax']) && !is_array($_POST['FormFax']) && $_POST['FormFax'] != '') {
        $ausgabe .= 'Fax : ' . htmlspecialchars($_POST['FormFax']) . "\n";
      }
     
      if (isset($_POST['FormRufname']) && !is_array($_POST['FormRufname']) && $_POST['FormRufname'] != '') {
        $ausgabe .= 'Rufname : ' . htmlspecialchars($_POST['FormRufname']) . "\n";
      }
     
      if (isset($_POST['FormTierart']) && !is_array($_POST['FormTierart']) && $_POST['FormTierart'] != '') {
        $ausgabe .= 'Tierart : ' . htmlspecialchars($_POST['FormTierart']) . "\n";
      }
     
      if (isset($_POST['FormRasse']) && !is_array($_POST['FormRasse']) && $_POST['FormRasse'] != '') {
        $ausgabe .= 'Rasse : ' . htmlspecialchars($_POST['FormRasse']) . "\n";
      }
     
      if (isset($_POST['FormGeburtsdatum']) && !is_array($_POST['FormGeburtsdatum']) && $_POST['FormGeburtsdatum'] != '') {
        $ausgabe .= 'Geburtsdatum : ' . htmlspecialchars($_POST['FormGeburtsdatum']) . "\n";
      }
     
      if (isset($_POST['FormGeschlecht']) && !is_array($_POST['FormGeschlecht']) && $_POST['FormGeschlecht'] != '') {
        $ausgabe .= 'Geschlecht : ' . htmlspecialchars($_POST['FormGeschlecht']) . "\n";
      }
     
      if (isset($_POST['FormFarbe']) && !is_array($_POST['FormFarbe']) && $_POST['FormFarbe'] != '') {
        $ausgabe .= 'Farbe : ' . htmlspecialchars($_POST['FormFarbe']) . "\n";
      }
     
      if (isset($_POST['FormMerkmale']) && !is_array($_POST['FormMerkmale']) && $_POST['FormMerkmale'] != '') {
        $ausgabe .= 'Merkmale : ' . htmlspecialchars($_POST['FormMerkmale']) . "\n";
      }
     
      if (isset($_POST['FormNachricht']) && !is_array($_POST['FormNachricht']) && $_POST['FormNachricht'] != '') {
        $ausgabe .= 'Nachricht : ' . htmlspecialchars($_POST['FormNachricht']) . "\n";
      }
      else {
        $fehler .= '<span style="color:#C82725">Keine Nachricht angegeben!</span><br />';
        $nachrichtOK = false;
      }
     
      if ($fehler == '') {
        mail('thp-schlagenhauf@web.de', 'Kontaktformular Tierheilpraxis', $ausgabe);
        echo '<b><font color="green">Wir haben Ihre Nachricht erhalten und werden diese schnellstm&ouml;glich bearbeiten.</font></b><br /><br />';
      }
      else {
        echo $fehler;
      }
    }
  ?>
        <p>
                <form method="POST" action="kontakt.php">

                                        <fieldset class="kontaktdaten">
                                                <legend>Kontaktdaten des Tierhalters</legend>
                                                <label for="name">Name</label><input size="30" id="name" name="FormName" type="text" value="" /><br />
                                                <label for="strasse">Strasse, Nr.</label><input size="30" id="strasse" name="FormStrasse" type="text" value="" /><br />
                                                <label for="ort">PLZ, Ort</label><input size="30" id="ort" name="FormOrt" type="text" value="" /><br />
                                                <label for="email">E-Mail</label><input size="30" id="email" name="FormEMail" type="text" value="" /><br />
                                                <label for="telefon">Telefon</label><input size="30" id="telefon" name="FormTelefon" type="text" value="" /><br />
                                                <label for="handy">Mobil</label><input size="30" id="handy" name="FormHandy" type="text" value="" /><br />
                                                <label for="fax">Fax</label><input size="30" id="fax" name="FormFax" type="text" value="" /><br />
                                        </fieldset>

                                        <fieldset class="kontaktdaten">
                                                <legend>Beschreibung des Tieres</legend>
                                                <label for="rufname">Rufname</label><input size="30" id="rufname" name="FormRufname" type="text" value="" /><br />
                                                <label for="tierart">Tierart</label><input size="30" id="tierart" name="FormTierart" type="text" value="" /><br />
                                                <label for="rasse">Rasse</label><input size="30" id="rasse" name="FormRasse" type="text" value="" /><br />
                                                <label for="gebdat">Geburtsdatum</label><input size="30" id="gebdat" name="FormGeburtsdatum" type="text" value="" /><br />
                                                <label for="geschlecht">Geschlecht</label><input size="30" id="geschlecht" name="FormGeschlecht" type="text" value="" /><br />
                                                <label for="farbe">Farbe</label><input size="30" id="farbe" name="FormFarbe" type="text" value="" /><br />
                                                <label for="merkmale">Merkmale</label><input size="30" id="merkmale" name="FormMerkmale" type="text" value="" /><br />
                                        </fieldset>

                                        <fieldset class="anfrage">
                                                <legend>Nachricht</legend>
                                                <textarea id="nachricht" name="FormNachricht" cols="45" rows="5"></textarea>
                                        </fieldset>

                                        <fieldset class="buttons">
                                                <legend>Ihre Aktion</legend>
                                                <input type="image" name="submit" src="img/button-formular-absenden.png" alt="Formular absenden" />
                                                <input type="reset" value="Eingabe löschen" class="senden" name="senden" />
                                        </fieldset>

                </form>



Und hier der Link zu dem Kontaktformular: KONTAKTFORMULAR (hier liegt die seite vorübergehend)

Hoffentlich kann mir jemand von Euch sagen, wo das Problem liegt und mir eine Lösung nennen.


Gruß,

Bodo

paracelsus 12.09.2008 22:48

Abend

Nun, Du hast ja die Values auf "" gesetzt, woher sollen also die Daten kommen?
Da Du Post verwendest probiere mal dieses:
PHP-Code:

 name="FormRufname" type="text" value="<?echo $_POST['FormRufName']?>" />

Nun hast Du eines erreicht, der Inhalt der POST Variable wird IMMER angezeigt, auch bei Sendungserfolg.
Du brauchst da also einen Fallback im Erfolgsfall.
Ginge beispielsweise, wenn De im Erfolgsfall nach mail() die Seite mittels header() neu aufrufst, und hier einen get mitgibst, der dann die Erfolgsmeldung auslöst.

Gruß

bodoalbstadt 12.09.2008 23:00

MANN!!!

Wieso ist mir das nicht eingefallen??? :boxed:

Ich danke Dir vielmals, Paracelsus.

paracelsus 12.09.2008 23:01

Weil Du nicht daran gedacht hast. :lol:
Ging mir auch schon so .. grade eben in einem anderen Thread.

bodoalbstadt 13.09.2008 00:15

Nächstes Problem mit Optionsfeld
 
Jetzt stehe ich gerade vor dem nächsten Problem. Mist aber auch.

Ich wollte nun eigentlich in dem Formular den Punkt "Geschlecht" mit zwei Optionsfeldern versehen: männlich und weiblich. Das Einfügen ist ja kein Problem. Nur leider wird der Wert hiervon nicht übegeben.

Code:

<label for="geschlecht">Geschlecht</label><input type="radio" value="männlich" name="FormGeschlecht">männlich<input type="radio" name="FormGeschlecht" value="weiblich">weiblich
Wo genau kann ich denn da was eintragen, dass der Wert übergeben wird?

Timo 13.09.2008 00:50

Hallo nach Albstadt,

erstmal der allgemeine Teil: Benutz keine Umlaute und Sonderzeichen in Feldnamen - das ist eine unnötige Fehlerquelle.

Jetzt zum Problem: Eigentlich hast du alles richtig gemacht. Zugreifen tut man - wie immer in PHP - mit $_POST['FormGeschlecht']. Um das zu verdeutlichen, hab ich ein kleines Testcase gebaut.


PHP-Code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
        <title>Testcase Radio-Button und PHP</title>
        </head>

        <body>
<?php
        
if($_SERVER['REQUEST_METHOD'] == 'POST') {
                if(isset(
$_POST['FormGeschlecht'])) {
                        if(
$_POST['FormGeschlecht'] == 'maennlich') {
                                echo 
'Hallo Herr ...,';
                        } else if(
$_POST['FormGeschlecht'] == 'weiblich')  {
                                echo 
'Hallo Frau ...,';
                        } else {
                                echo 
'Hallo etwas ...,';
                        }
                }
        }
        else {
?>
        <form action="#" method="post">
                <label for="geschlecht">Geschlecht</label><br>
                <input type="radio" value="maennlich" name="FormGeschlecht">männlich<br>
                <input type="radio" value="weiblich" name="FormGeschlecht">weiblich<br>

                <input type="submit" value="abschicken" name="abschicken">
         </form>

<?php
        
}
?>
</body>
</html>


bodoalbstadt 13.09.2008 01:17

Also, Timo, ich danke Dir für die Hilfe, doch mit "übergeben" meinte ich eigentlich, dass die Auswahl des Optionsfeldes auch nach dem Absenden des Formulars noch ausgewählt bleiben soll. Doch momentan ist es leider so, dass die Auswahl verschwunden ist. Hat also jemand vergessen, bspw. seinen Namen oder die Mail-Adresse anzugeben, so sind zwar soweit alle Daten in den Feldern noch vorhanden, aber das Optionsfeld muss erneut ausgewählt werden. Achtet man dann nicht darauf und es fällt einem nicht auf, ist hier also keine Auswahl mehr. Irgendwie also schon blöd. Ich hoffe, Du weißt was ich meine. Ich hab jetzt, zu so später Stunde, bestimmt nen ganz schönen Mist zusammen geschrieben.

Curtains 13.09.2008 01:37

Hallo bodoalbstadt,

so könnte es gehen:

PHP-Code:

<input type="radio" value="maennlich" name="FormGeschlecht" <?php echo $_POST['FormGeschlecht'] == 'maennlich' 'checked' ''?> />


bodoalbstadt 13.09.2008 10:17

Danke Curtains für die schnelle Hilfe!!! Klappt prima.

Boris 13.09.2008 12:56

Bei XHTML muss es eher checked="checked" heißen ;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:38 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023