| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

15-08-2009, 08:18
|
|
marielou
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 9
|
|
Formmailer mit Pflichtfelder
Hi, ich habe auf unserer Homepage einen Formmailer eingebaut. Nun möchte ich zusätzlich noch festlegen, welche Felder zwingend ausgefüllt werden sollen.
Momentan könnte z. B. jeder Besucher das Formular ausfüllen und absenden, ohne seinen Namen dabei anzugeben.
Hier sollte aber dann eine Meldung "Bitte e-Mail eingeben" erscheinen.
Hier der Formmailer:
PHP-Code:
<?php ### Konfiguration ###
# Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!
# An welche Adresse sollen die Mails gesendet werden? $strEmpfaenger = 'test@tester.de';
# Welchen Betreff sollen die Mails erhalten? $strSubject = 'eMail von www.homepage.de';
# Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden? # Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben! $strReturnhtml = 'http://www.homepage.de/danke-email.php';
# Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen? $strDelimiter = ":\t";
### Ende Konfiguration ###
if($_POST) { $strFrom = $_POST["email"];
while(list($strName,$value) = each($_POST)) { if(is_array($value)) { foreach($value as $value_array) { $strMailtext .= $strName.$strDelimiter.$value_array."\n"; } } else { $strMailtext .= $strName.$strDelimiter.$value."\n"; } }
if(get_magic_quotes_gpc()) { $strMailtext = stripslashes($strMailtext); }
// filter $email = trim($_POST["email"]); $betreff = trim($_POST["betreff"]); // validate $errors = array(); if (empty($email)) { $errors[] = "Bitte E-Mail eingeben."; } if (empty($betreff)) { $errors[] = "Bitte Betreff eingeben."; } $hasErrors = !empty($errors); if (!$hasErrors) { mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom) or die("Die Mail konnte nicht versendet werden."); header("Location: $strReturnhtml"); exit; } if ($formSent && $hasErrors) { echo "Fehler beim Versenden des Formulars:<ul><li>", implode("</li><li>", $errors), "</li></ul>"; } }
?>
HTML-Code:
<html>
<head>
<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
<p>Dein Name:<br>
<input type="text" name="name" size="35" maxlength="100" style="background-color: #FBFCFD; border-left: 1px dashed #84c225; border-right: 1px dashed #84c225; border-top: 1px dashed #84c225; border-bottom: 1px dashed #84c225;"></p>
<p>Deine eMail-Adresse:<br>
<input type="text" name="email" size="35" style="background-color: #FBFCFD; border-left: 1px dashed #84c225; border-right: 1px dashed #84c225; border-top: 1px dashed #84c225; border-bottom: 1px dashed #84c225;"></p>
<p>Betreff:<br>
<input type="text" name="betreff" size="35" style="background-color: #FBFCFD; border-left: 1px dashed #84c225; border-right: 1px dashed #84c225; border-top: 1px dashed #84c225; border-bottom: 1px dashed #84c225;"></p></p>
<p>Deine Nachricht:<br>
<textarea name="nachricht" cols="38" rows="8" style="background-color: #FBFCFD; border-left: 1px dashed #84c225; border-right: 1px dashed #84c225; border-top: 1px dashed #84c225; border-bottom: 1px dashed #84c225;"></textarea></p>
<p>
<input type="submit" value="absenden"> <input type="reset" value="tipp ex">
<br><br>
</form>
</body>
</html>
...aber das Formular bringt keine Fehlermeldung!
Muß ich vielleicht vom oberen Code noch was entfernen? Paßt irgendwas nicht zusammen?
Vielen Dank im voraus für Hilfe
Grüße, Marie
|

15-08-2009, 12:09
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo Marie,
wo wird denn deine Variable $formSent initialisiert? Ich vermute nie und dadurch ist
PHP-Code:
if ($formSent && $hasErrors) {
immer falsch.
Gruß,
Anja
|

15-08-2009, 12:21
|
|
marielou
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 9
|
|
hm, sorry dass ich mich bisschen blöd anstelle, versteh aber nicht was du meinst! kannst du das umschreiben?
was meinst du mit initialisiert? an welcher stelle fehlt was oder muß ich was ändern?
mille grazie!!
|

15-08-2009, 12:24
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Ich kann die Stelle nicht finden, wo
PHP-Code:
$formSent = irgendwas;
steht. Dadurch gibt es diese Variable nicht und sie führt dazu, dass die Bedingung nie wahr wird.
|

15-08-2009, 12:38
|
|
marielou
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 9
|
|
versteh schon, was ihr meint. aber ich hab doch oben stehen
PHP-Code:
if (empty($email)) { $errors[] = "Bitte E-Mail eingeben."; } if (empty($betreff)) { $errors[] = "Bitte Betreff eingeben."; }
da steht (für mich als anfänger  ) doch, dass wenn das feld email ist leer --> dann fehlermeldung "Bitte E-Mail eingeben"
oder?
ist da nicht irgendwas doppelt-gemobelt?
wann gibt das script denn "Fehler beim Versenden des Formulars" und wann "Bitte E-Mail eingeben" aus?
|

15-08-2009, 12:45
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von marielou
da steht (für mich als anfänger  ) doch, dass wenn das feld email ist leer --> dann fehlermeldung "Bitte E-Mail eingeben"
|
Ja, dann steht in der Variable $errors vermutlich sogar irgendwas drin.
Aber ausgegeben wird sie nirgends, weil hier
PHP-Code:
if ($formSent && $hasErrors) {
die Bedingung nicht erfüllt wird, wenn es $formSent nicht gibt.
Nimm doch $formSent da mal raus, und prüfe nur $hasErrors.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

15-08-2009, 12:48
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Es ist schwierig, einem Anfänger Dinge zu erklären, für die Grundlagenwissen erforderlich ist. Du nimmst ein fertiges Script, änderst es ab, ohne prinzipiell zu verstehen, was du da machst und gehst dann in ein Forum, um es dort wieder reparieren zu lassen. Das funktioniert so nicht. Die Leute hier sind prinzipiell Hilfsbereit, lassen sich aber ungern unentgeltlich als Programmierer missbrauchen, wenn sie für die selbe Arbeit sonst nen Haufen Geld verdienen würden.
Du könntest dich entweder an den Ersteller des Skripts wenden oder dir ein neues suchen. Ich habe dir bereits die wahrscheinlichste Ursache des Problems genannt und beschrieben. Aus meiner Sicht ist jetzt ein bisschen Eigeninitiative deinerseits angesagt.
Gruß,
Anja
|

15-08-2009, 13:10
|
|
marielou
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 9
|
|
ok, vielen dank! durch das rausnehmen von klappts!
möcht aber gerne noch verstehen, wozu dieser teil im script notwendig ist:
PHP-Code:
if (!$hasErrors) { mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom) or die("Die Mail konnte nicht versendet werden."); header("Location: $strReturnhtml"); exit; }
Die Fehlermeldungen lauten ja immer:
Fehler beim Versenden des Formulars: - Bitte E-Mail eingeben.
- Bitte Betreff eingeben.
|

15-08-2009, 13:16
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Die Meldung "Die Mail konnte nicht versendet werden." kommt nur, wenn auf dem Server was schief geht. Dass du die nie bekommst, ist das gute Anzeichen dafür, dass dein Server funktioniert.
|

15-08-2009, 13:18
|
|
marielou
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 9
|
|
ok, verstehe! alles geklärt - vielen dank!
|

15-08-2009, 17:21
|
|
marielou
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 9
|
|
eine frage hätt ich jetzt doch noch!
ich habe auf der homepage auch ein ziemlich langes formular, welches einige arbeit zum ausfüllen macht. wenn der benutzer jetzt ein pflichtfeld vergißt und die aufforderung (z. b. email eintragen) kommt, sind gleichzeitig auch alle anderen bereits eingetragenen daten weg.
ich denke dass dies einige verärgern könnte!
kann man das auch anders einstellen?
|

15-08-2009, 17:37
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
Ja, indem man einen value-Wert vorgibt. Einfach gesagt so:
PHP-Code:
<input type="text" name="bla" value="<?php echo $_POST['bla'];?>" />
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

15-08-2009, 17:42
|
|
marielou
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 9
|
|
danke! funktioniert!
|

15-08-2009, 18:09
|
|
marielou
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 9
|
|
noch ne frage!
so versteh ich das
HTML-Code:
<td>Körperl. Mängel:</td>
<td><input name="KoerperlMaengel" type="text" value="<?php echo $_POST['KoerperlMaengel'];?>" style="background-color: #FBFCFD; border-left: 1px dashed #84c225; border-right: 1px dashed #84c225; border-top: 1px dashed #84c225; border-bottom: 1px dashed #84c225;"></td>
aber wie mach ich das in diesen fällen? radio?
HTML-Code:
<tr>
<td>Sehhilfe:</td>
<td>Ja <input name="Sehhilfe" type="radio" value="Ja"> Nein <input name="Sehhilfe" type="radio" value="Nein"></td>
</tr>
HTML-Code:
<tr>
<td>Klasse<select name="AnmeldeKlasse">
<option>auswählen
<option>A
<option>B
<option>C
</select></td>
</tr>
HTML-Code:
<tr>
<td>Anrede:*</td>
<td colspan="3"><select name="Anrede" size="1">
<option>Herr
<option>Frau</select></td>
</tr>
HTML-Code:
<p>Deine Nachricht:<br>
<textarea name="Nachricht" cols="38" rows="8" style="background-color: #FBFCFD; border-left: 1px dashed #84c225; border-right: 1px dashed #84c225; border-top: 1px dashed #84c225; border-bottom: 1px dashed #84c225;"></textarea></p>
Geändert von marielou (15-08-2009 um 18:22 Uhr)
|

15-08-2009, 18:21
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von marielou
aber wie mach ich das in diesen fällen? radio?
|
Zeig mal langsam bitte etwas Eigeninitiative - sowas kann man doch mal selber nachlesen gehen!
SELFHTML: HTML/XHTML / Formulare / Auswahllisten, Radio-Buttons und Checkboxen
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|