 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
16.08.2001, 21:10
|
#1
|
|
TP-Senior
Registriert seit: Apr 2001
Ort: Nordhessen
|
formMail mittels php
Hallo,
ich beschäftige mich erst seit heute mit php und natürlich gibt es schon Probleme.
Ich habe also ein Formular erstellt, zu sehen unter
http://www.apothekesuttrop.de/vorbestellung.html
Dem Formular ist als Aktion die Datei mailakti.php zugewiesen mit folgendem Inhalt:
<? $mailtext = "Patient hat folgendes eingegeben:\n\n";
$mailtext = "Name: $Name\n";
$mailtext = "Wunschtermin:\n\n";
$mailtext = "Tag: $Tag\n";
$mailtext = "Monat: $Monat\n";
$mailtext = "Jahr: $Jahr\n";
$mailtext = "Medikament1: $Medikament1\n";
$mailtext = "Medikament2: $Medikament2\n";
$mailtext = "Medikament3: $Medikament3\n";
$mailtext = "Medikament4: $Medikament4\n";
$mailtext = "Email des Patienten: $Email\n";
mail("latinotaverne@t-online.de", "Vorbestellung", $mailtext, "");
?>
Meine Absicht war, in der eMail den Inhalt aller Formularfelder zugeschickt zu bekommen, aber es funzt nicht. Ich bekomme eine eMail, wo nur die letzte Zeile steht, also: "Email des Patienten: soundso@undso". Der ganze Rest fehlt. Was mache ich falsch?
|
|
|
16.08.2001, 21:22
|
#2
|
|
TP-Greis
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
|
Das ist auch kein Wunder.
Du überschreibst die Variable $mailtext jedesmal.
Damit es klappt, musst Du den Text der Formularfelder anhängen.
Hierzu ist anstatt des Gleichheitszeichens ein ".=" zu verwenden.
Also so:
PHP-Code:
<? $mailtext = "Patient hat folgendes eingegeben:\n\n";
$mailtext .="Name: $Name\n";
$mailtext .="Wunschtermin:\n\n";
$mailtext .="Tag: $Tag\n";
$mailtext .="Monat: $Monat\n";
$mailtext .="Jahr: $Jahr\n";
$mailtext .="Medikament1: $Medikament1\n";
$mailtext .="Medikament2: $Medikament2\n";
$mailtext .="Medikament3: $Medikament3\n";
$mailtext .="Medikament4: $Medikament4\n";
$mailtext .="Email des Patienten: $Email\n";
mail("latinotaverne@t-online.de", "Vorbestellung", $mailtext);
?>
Du musst natürlich nicht alles in eine Variable schreiben.
Die Funktion mail() verträgt auch mehrere davon.
Wahlweise könnt es auch so aussehen:
PHP-Code:
mail("latinotaverne@t-online.de", "Vorbestellung", $mailtext, "\n", $Name, "\n", ...);
__________________
Give up yourself into the moment — The time is now.
Geändert von Lars (16.08.2001 um 21:41 Uhr).
|
|
|
16.08.2001, 21:31
|
#3
|
|
TP-Senior
Registriert seit: Apr 2001
Ort: Nordhessen
|
Schmobi, Du bist mein Held!
Es fuuuunnnzt!
|
|
|
16.08.2001, 21:35
|
#4
|
|
TP-Greis
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
|
*freu*
__________________
Give up yourself into the moment — The time is now.
|
|
|
16.08.2001, 21:42
|
#5
|
|
TP-Senior
Registriert seit: Apr 2001
Ort: Nordhessen
|
Achso, danke.
Wegen "" zuviel:
Im schlauen Buch :"Jetzt lerne ich Dynamic Web Publishing" wird garaten bei Funktion mail() vier Parameter anzugeben. Angeblich hat sich in php Version 3.0.12 ein Bug eingeschlichen, der dafür sorgt, dass eMails unter Windows nicht verschickt werden, wenn kein vierter Parameter angegeben wird. Deswegen eine leere Zeichenkette.
Ich habe zwar keine Ahnung, ob das stimmt aber sicher ist sicher. 
|
|
|
16.08.2001, 21:58
|
#6
|
|
TP-Senior
Registriert seit: Apr 2001
Ort: Nordhessen
|
Noch eine Frage (ich weiß, ich nerve):
Jetzt möchte ich gerne eine einfache Vollständigkeitsprüfung durchführen. Dazu habe ich dieses gebastelt:
<?
$komplett = true;
if ($Versand=="Abschicken")
{
if ($Name==""){ $komplett = false; }
if ($Tag=="") { $komplett = false; }
if ($Monat=="") { $komplett = false; }
if ($Jahr=="") { $komplett = false; }
if ($Medikament1=="") { $komplett = false; }
if ($Email=="") { $komplett = false; }
if ($komplett) {
header("Location: danke.php");
exit;
}
}
?>
Kann sowas überhaupt funzen?
Und wenn ja, wo füge ich das ein? In die gleiche Datei wie mail() ? Oder vielleicht in die html-Datei mit Formular? Wo genau?
Und wenn ja, muß ich da etwas beachten, muß ich die beiden Skripte irgendwie verbinden? Welcher kommt zuerst?
|
|
|
16.08.2001, 22:16
|
#7
|
|
TP-Greis
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
|
a) Der von Dir bzw. dem Buch angesprochene Bug bezieht sich vermutlich darauf, dass wenn erweiterte Header mitgesendet werden, also etwa "Reply-To:" oder "Bcc:" diese mit "\r\n" vom Rest getrennt werden müssen. Hierbei ist im übrigen zu beachten, dass diese Header case-sensitive sind!
b) Ich würde hier Javascript einsetzen, da es bei einem relativ kleinen Formular wie Deinem bequemer zu handeln ist (nicht die ganzen Eingaben auf der Folgeseite wieder ausgeben etc.):
PHP-Code:
function checkForm(){ // (c) schmobi 2001
var f = document.forms[0]
var error = " "
if (f.Name.value=="")
error += "- Name\n "
if (f.Tag.value=="")
error += "- Tag\n "
if (f.Monat.value=="")
error += "- Monat\n "
if (f.Jahr.value=="")
error += "- Jahr "
if (f.Medikament1.value=="")
error += "- Medikament1\n"
if (f.Medikament2.value=="")
error += "- Medikament2\n"
if (f.Medikament3.value=="")
error += "- Medikament3\n"
if (f.Medikament4.value=="")
error += "- Medikament4\n"
if (f.Email.value=="")
error += "- eMail"
if (error != " "){
var warning = "Folgende Felder müssen ausgefüllt werden:\n\n"
warning += error
alert(warning)
return false
}
return true
}
Das ganze einfach in den Kopf der Formularseite packen und den Form-Tag um "onSubmit(return checkForm)" erweitern.
Wenn Du es per PHP lösen willst, musst im Mail-Script erst alle Variablen auf Inhalt prüfen ( if ($Name == "")), die eventuell Leeren ausgeben, um Vervollständigung bitten und daraufhin den Vorgang wiederholen.
Wenn dann alles ausgefüllt ist, kannst Du endlich schleifengesteuert mail() auslösen.
Wie man sieht, ist das für Dich und den Nutzer sehr fummelig. Das Javascript gibt schnell ein Hinweisfenster aus und gut ist's.
__________________
Give up yourself into the moment — The time is now.
Geändert von Lars (17.08.2001 um 10:12 Uhr).
|
|
|
16.08.2001, 22:28
|
#8
|
|
TP-Senior
Registriert seit: Apr 2001
Ort: Nordhessen
|
 fantastisch, werde ich sofort ausprobieren!
Danke! Ich versuche es mit Java Skript, das Ganze sieht so tatsächlich einfacher aus.
Geändert von yemaya (16.08.2001 um 22:32 Uhr).
|
|
|
16.08.2001, 22:44
|
#9
|
|
TP-Greis
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
|
Um dem ganzen den letzten Schliff zu geben, können wir auch noch checken, ob es sich z.B. um ein gültiges Datum oder eine gültige eMail-Adresse handelt, um eventuellen Scherzbolden weitere Hürden in den Weg zu legen.
Meld' Dich, wenn da Bedarf besteht.
BTW: Warum eigentlich drei Eingabefelder für das Datum? Würde es nicht auch ein zehnstelliges Feld (TT.MM.JJJJ) tun? Aber eigentlich ist das auch egal...
__________________
Give up yourself into the moment — The time is now.
|
|
|
17.08.2001, 01:33
|
#10
|
|
TP-Senior
Registriert seit: Apr 2001
Ort: Nordhessen
|
 schm  bi  ,
es ist vollbracht.
Dank Deiner Hilfe hat alles gefunzt  . Ich habe noch eine Ausgabe der Formulardaten auf der Danke-Seite dazugebaut. Sogar das funzt ("stolz").
Zitat:
|
Um dem ganzen den letzten Schliff zu geben, können wir auch noch checken, ob es sich z.B. um ein gültiges Datum oder eine gültige eMail-Adresse handelt
|
Au ja, super Idee. Ich werde mich dazu melden, aber erst in einer Woche. Ich hoffe, Du bist dann noch da 
|
|
|
17.08.2001, 10:07
|
#11
|
|
TP-Greis
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
|
Ich bin an 24 Stunden 365 Tage im Jahr hier. 
Sonst kannst Du ja auch kurz eine Nachricht schicken.
P.S. Da fehlt noch ein \n beim Fehlertext für Medikament1. Sonst stehen Medikament1 und eMail in einer Zeile. War aber mein Fehler, ich habe es gerade in meinem Posting (s. oben) geändert.
Immer diese Flüchtigkeitsfehler...
__________________
Give up yourself into the moment — The time is now.
Geändert von Lars (17.08.2001 um 10:13 Uhr).
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 02:48 Uhr.
|
 |