Forenindex » Programmierung/Entwicklung » PHP und MySQL » Anzeige der Fehlermeldung im Formular

Anzeige der Fehlermeldung im Formular

kareh
Beiträge gesamt: 239

13. Okt 2006, 23:32
Bewertung:

gelesen: 2414

Beitrag als Lesezeichen
Hallo zusammen,

ich bin noch PHP-Anfänger, deshalb meine Anfrage.

Mein Formular funktioniert soweit korrekt. Die allgemeine Meldung, dass etwas bzw. was genau fehlt funktioniert auch. Diese Fehlermeldung wird im Moment oberhalb des gesamten Formularsangezeigt.
Die einzelne betreffende Fehlermeldung (ob Name oder z.B. E-Mail) würde ich gerne mittels CSS (veränderte(r) Rahmenfarbe und Hintergrund) in den jeweiligen Eingabefeldern kennzeichnen.

Diese sollten sich unabhängig voneinander, je nach Eingabe, als Fehlemeldung anzeigen bzw. nach korrekter Eingabe wieder mit normalem Rahmen und Hintergrund anzeigen.

Viellecht kann mir jemand helfen, wie ich mein nachfolgend aufgeführtes (möglicherweise dillethantisches) Formular verändern muss, um meine Vorstellung zu verwirklichen.

Code
<?php 
if ($_POST[senden]==1){

# --- Ausgabeübernahme ---
$anrede = $_POST['anrede'];
$name = $_POST['name'];
$vorname = $_POST['vorname'];
$email = $_POST['email'];
$telefon = $_POST['telefon'];
$betreff = $_POST['betreff'];
$nachricht = $_POST['nachricht'];
$kopie = $_POST['kopie'];
$absender = $_POST['absender'];

# --- Mailadressen ---

# Empfänger Homepage
$mail_an="name@domain.de";

# Schreiber
$mail_an2=$_POST['email'];

# --- Fehlerprüfung ---

# Einleitung Fehlermeldung
if($anrede=="-------" OR
!$name OR
!$vorname OR
!$email OR
!preg_match("/^[_a-zA-Z0-9-](\.{0,1}[_a-zA-Z0-9-])*@([a-zA-Z0-9-]{2,}\.){0,}[a-zA-Z0-9-]{3,}(\.[a-zA-Z]{2,4}){1,2}$/",$email) OR
!$betreff OR
!$nachricht) {echo '<font color="#EC0000"><b> Hier fehlt noch Ihre Angabe: </b></font><br>';unset($_POST[senden]);}

# Anrede
if($anrede=="-------") {echo '<font color="#EC0000">Anrede, </font>';unset($_POST[senden]);}

# Name
if(!$name) {echo '<font color="#EC0000">Ihr Name, </font>';}

# Vorname
if(!$vorname) {echo '<font color="#EC0000">Ihr Vorname, </font>';unset($_POST[senden]);}

# E-Mail
if(!$email) {echo '<font color="#EC0000">Ihre E-Mail-Adresse, </font>';unset($_POST[senden]);}
else
if(!preg_match("/^[_a-zA-Z0-9-](\.{0,1}[_a-zA-Z0-9-])*@([a-zA-Z0-9-]{2,}\.){0,}[a-zA-Z0-9-]{3,}(\.[a-zA-Z]{2,4}){1,2}$/",$email))
{echo '<font color="#EC0000">diese E-Mail-Adresse ist ungültig, </font>';unset($_POST[senden]);}

# Betreff
if(!$betreff) {echo '<font color="#EC0000">Betreff, </font>';unset($_POST[senden]);}

# Nachricht
if(!$nachricht) {echo '<font color="#EC0000">Ihre Nachricht</font>';unset($_POST[senden]);}

# --- Mailinhalte ---

# an Empfänger Homepage
$text ="\n Eine Nachricht über die Homepage\n
_________________________________________________\n
Vorname: $vorname
Nachname: $name
Telefon: $telefon
E-Mail: $email
_________________________________________________\n
>>> gesendete Nachricht:\n
$nachricht";

# an Schreiber
$text2 ="\n Guten Tag $anrede $name,\n nachfolgend die Kopie Ihrer Nachricht\n
_______________________________________________________\n
>>> gesendete Nachricht:\n
$nachricht\n
_______________________________________________________\n";
}

if(!$_POST[senden])
{
?>
<style type="text/css">
<!--
body,td,th {font-family: Arial, Verdana, Tahoma;font-size: 12px;color: #000000;}
body {margin: 0px;}
-->
</style>
<link href="../css/kontaktformular.css" rel="stylesheet" type="text/css">
<form name="formular" action="<?php echo $PHP_SELF ?>" method="post">
<table width="460" border="0" cellpadding=0 cellspacing=0>
<tr align="left" valign="middle">
<td width="150">Pflichtfelder <strong>*</strong> </td>
<td width="5"><img src="../img/trans.gif" alt="tr" width="2" height="24"></td>
<td width="305">&nbsp;</td>
</tr>
<tr align="left" valign="middle">
<td width="150"><strong>Anrede: *</strong></td>
<td width="5"><img src="../img/trans.gif" alt="tr" width="2" height="24"></td>
<td width="305"><select name="anrede" class="checkbox">
<option>-------</option>
<option value="Herr"<?php print(("Herr"==$anrede)?"selected":"")?>>Herr</option>
<option value="Frau"<?php print(("Frau"==$anrede)?"selected":"")?>>Frau</option>
</select></td>
</tr>
<tr align="left" valign="middle">
<td width="150"><strong>Ihr Name: *</strong></td>
<td width="5"><img src="../img/trans.gif" alt="tr" width="2" height="24"></td>
<td width="305"><input class="inputtext" name="name" type="text" value="<?php print $name; ?>"></td>
</tr>
<tr align="left" valign="middle">
<td width="150" class=""><strong>Ihr Vorname: *</strong></td>
<td width="5"><img src="../img/trans.gif" alt="tr" width="2" height="24"></td>
<td width="305"><input class="inputtext" name="vorname" type="text" value="<?php print $vorname; ?>"></td>
</tr>
<tr align="left" valign="middle">
<td width="150"><strong>Ihre E-Mail-Adresse: * </strong></td>
<td width="5"><img src="../img/trans.gif" alt="tr" width="2" height="24"></td>
<td width="305"><input class="inputtext" name="email" type="text" value="<?php print $email; ?>">
</td>
<tr align="left" valign="middle">
<td width="150"><strong>Ihre Telefonnummer:</strong></td>
<td width="5"><img src="../img/trans.gif" alt="tr" width="2" height="24"></td>
<td width="305"><input class="inputtext" name="telefon" type="text" value="<?php print $telefon; ?>">
</td>
<tr align="left" valign="middle">
<td width="150"><strong>Betreff: *</strong></td>
<td width="5"><img src="../img/trans.gif" alt="tr" width="2" height="24"></td>
<td width="305"><input class="inputtext" name="betreff" type="text" value="<?php echo $betreff; ?>">
</td>
<tr align="left">
<td width="150" valign="top"><strong>Ihre Nachricht: *</strong></td>
<td width="5"><img src="../img/trans.gif" alt="tr" width="2" height="100"></td>
<td width="305"><textarea class="inputtextarea" name="nachricht"><?php print $nachricht; ?></textarea>
</td>
</tr>
<tr align="left">
<td width="150"><img src="../img/trans.gif" alt="tr" width="10" height="20"></td>
<td width="5"><img src="../img/trans.gif" alt="tr" width="2" height="24"></td>
<td width="305" height="20" valign="middle"><input name="kopie" type="checkbox" class="checkbox" value="ja" <?php print (("ja"==$kopie)?" checked":"") ?>>
Kopie an Ihre Adresse</td>
</tr>
<tr align="left">
<td width="150"><input type="hidden" value="Homepage" name="absender"></td>
<td width="5"><img src="../img/trans.gif" alt="tr" width="2" height="23"></td>
<td width="305"0><input type="hidden" value="1" name="senden">
<input class="inputbutton" type="submit" value="Nachricht senden" name="abschicken">
<input class="inputbutton2" type="reset" value="L&ouml;schen" name="loeschen"></td>
</tr>
</table>
</form>
<?php
# --- Funktion Mailzustellung ---
} else {
# an Empfänger Homepage
$mail_kopf="From: $vorname $name <$email>\n";
$mail_kopf.="Reply-To: $email\n";
$mail_kopf.="Content-Type: text/plain";
# an den Schreiber
$mail_kopf2="From: $absender <$mail_an>\n";
$mail_kopf2.="Reply-To: $mail_an\n";
$mail_kopf2.="Content-Type: text/plain";

if($senden="1"){
if (mail($mail_an,$betreff,$text,"$mail_kopf"))
{
if ($kopie == "ja" AND $anrede == "Herr") {
mail($mail_an2,$betreff,$text2,"$mail_kopf2");
}
if ($kopie == "ja" AND $anrede == "Frau") {
mail($mail_an2,$betreff,$text2,"$mail_kopf2");
}
echo "<b><br><br>Vielen Dank für Ihre Mitteilung $anrede $name, <br><br>
Wir werden Ihre Nachricht umgehend bearbeiten. </b>";
}else{
echo "<br>Beim Versenden der E-Mail ist ein Fehler aufgetreten!<br>";
}
}
}
?>


Ich bedanke schon mal für jeden Tipp!
------------------------------------------------------------------
Gruß Karin
(Benutze DW CS3, Firefox 32.0.1, Windows 7)

Anzeige der Fehlermeldung im Formular

ganesh
Beiträge gesamt: 1981

14. Okt 2006, 04:51
Bewertung:

gelesen: 2402

Beitrag als Lesezeichen
allgemeiner Tipp:

statt <?php print $vorname; ?>
kannst du auch <?=$vorname?> verwenden (Kurzform)

Schau mal nach bzgl. "heredoc" Syntax für Texte mit mehreren Zeilen:
http://ch2.php.net/manual/de/language.types.string.php#language.types.string.syntax.heredoc
(d.h. bei dir konkret für die Email-Nachricht)


Dann zur eigentlichen Frage:

Erstelle pro Input Feld zwei Klassen: eine für default (keine Warnung), eine für fehlerhafte bzw. fehlende Eingabe.

.textInput {
border: 1px solid #000000;
}

.textInputError {
border: 1px solid #000000;
background: #FFCC00;
}


if(!$email) {
$emailCSS = "textInputError";
}

<input type="text" class="<?$emailCSS?>" name="usw.">

Anzeige der Fehlermeldung im Formular

ganesh
Beiträge gesamt: 1981

14. Okt 2006, 04:55
Bewertung:

gelesen: 2401

Beitrag als Lesezeichen

Anzeige der Fehlermeldung im Formular

kareh
Beiträge gesamt: 239

14. Okt 2006, 23:05
Bewertung:

gelesen: 2344

Beitrag als Lesezeichen
Hallo ganesh,

vielen Dank für Deine Tipps.

Was das Aussehen einer Fehlermeldung per CSS angeht, habe ich mein Problem lösen können. Vielen Dank!

Was mich etwas ärgert, ist die Tatsache, dass der IE (den ja leider die meisten User nutzen) die CSS-Definition für Rahmen und Cursor nicht für alle Formularfelder (z.B. Liste/Menü) übernimmt. Gibt es da noch andere Möglichkeiten?

Mit Deinem Hinweis:
Zitat Schau mal nach bzgl. "heredoc" Syntax für Texte mit mehreren Zeilen:
http://ch2.php.net/manual/de/language.types.string.php#language.types.string.syntax.heredoc
(d.h. bei dir konkret für die Email-Nachricht)

kann ich leider nichts anfangen. Da weiß ich nicht, was Du damit meinst.
------------------------------------------------------------------
Gruß Karin
(Benutze DW CS3, Firefox 32.0.1, Windows 7)