Forum
Tipps
News
Menu-Icon

Formular mit PHP versenden?

Hallo zusammen,

hat jemand lust mir zu helfen ein PHP Skript für die Ausführung eines Formulars zu erstellen. Ich habe nehmlich noch keine Ahnung von PHP aber es ist anscheinend die einzige Lösung das Formular zu übertragen.

http://www.stuhlvertrieb.de/gutschein/

Mein Server ist dafür geeignet.

Gruss
joh


Antworten zu Formular mit PHP versenden?:

Moin |

Hast du schon einen Ansatz? Poste ma, was du schon so gebaut hast...

greez 8)
JoSsiF

Hallo,

ich wollte gerade erst anfangen und habe mir mal diesen
Link reingezogen.......

http://www.skyhome.de/php/doc3_2.html

So in der Art habe ich das gedacht.
Ich Kann Dir den HTML Text als E-Mail senden.

Gruss
joh

Gruß |

In dem Turorial ist ja schon einiges gesagt.
Du müsstest im Prinzip nur noch die Eingaben aus den Formularfeldern in der Form verarbeiten, dass sie dann mit im Mailtext oder wo auch immer stehen.

Beispiel:
Du hast ein Formularfeld

<input type="text" name="vorname">
Dann greifst du im verarbeitenden Skript z.B. so drauf zu:
<?
$mailtext .= $_REQUEST[vorname];
?>

Mit der Verwednung des superglobalen Arrays $_REQUEST bist du bei der Verarbeitung unabhängig von der verwendeten Sendemethode des Formulars (GET oder POST) und umgehst zudem den Umstand einiger Server, dass die Option register_globals auf off steht.

Mehr brauchst du dann kaum wissen, der Mailversand ist eigentlich recht simpel.
Denke damit erübrigt sich auch, dass du mir den Quelltext schicken musst :)

Wenn's doch noch Probleme gibt, dann melde dich nochmal.

greez 8)
JoSsiF

Hallo JoSsif,

hier mal meine ersten Ergebnisse.
Sind garantiert jede Menge Fehler drin.

Zum einen das PHP-Skript.
Ich weiss nicht ob "[email protected]" da richtig ist?

<?php

function mail_senden($vorname, $name, $ort, $strasse, $email, $fon, $fax) {
 // Zuerst wird der Text zusammengesetzt
 $mailtext = "Hallo Bearbeiter" ",\n" ;
 $mailtext = "Herr/Frau" .= $_REQUEST[vorname] ",\n" ;
 $mailtext .= $_REQUEST[name] ",\n" ;
 $mailtext .= $_REQUEST[ort] ",\n" ;
 $mailtext .= $_REQUEST[strasse] ",\n" ;
 $mailtext .= $_REQUEST[email] ",\n" ;
 $mailtext .= $_REQUEST[fon] ",\n" ;
 $mailtext .= $_REQUEST[fax] ",\n" ;
 $mailtext .= "möchte einen Gutschein haben." ;
 // Zus&#65533;zlich wird noch der Header definiert
 $header = "From: \"Gutschein\" <$email>" ;
 mail("[email protected]", "Gutschein", $mailtext, $header) ; ?>

<h1>Die E-Mail wurde erfolgreich verschickt.</h1><br>
<a href="javascript:history.go(-2);">Zurück</a>

<?php
} // Funktion mail_senden() zu Ende

function fehler() {
 //Keine PHP-Befehle erforderlich ?>

<h1>Fehlende Eingabe !</h1><br>
<a href="javascript:history.back();">Zurück</a>

<?php
} // Funktion fehler() zu Ende

?>
<HTML>
<HEAD>
 <TITLE>Mail-Test</TITLE>
</HEAD>

<BODY>
<?php

// Eigentlicher Kern des Skripts
if ( empty($name) || empty($email) ) {
 fehler() ;
} else {
 mail_senden($name, $mail) ;
}

?>
</BODY>
</HTML>


**********Zum anderen das Formular.**********

<html>
<head>
<title>Gutscheinaktion</title>
</head>
<body text="#000000" bgcolor="#FFFF00" link="#0000FF"  alink="#5810FF" vlink="#FF0000">


<FORM action="mail_it2.php" method="post">

<table border="1" bgcolor="#FFFFFF">
<tr>
  <td>Vorname</td>
  <td> <input type="Text" name="vorname" value="" size="40"       maxlength="200">
  </td>
</tr>
<tr>
  <td>Nachname</td>
  <td> <input type="Text" name="nachname" value="" size="40" maxlength="100">
  </td>
</tr>
<tr>
  <td>Plz. / Ort</td>
  <td> <input type="Text" name="ort" value="" size="50" maxlength="100"></td>
</tr>
<tr>
 <td>Strasse / HausNr.</td>
 <td><input type="Text" name="strasse" value="" size="50" maxlength="200"> </td>
</tr>
<tr>
 <td>E-mail Adresse</td>
 <td><input type="Text" name="email" value="" size="50" maxlength="200"> </td>
</tr>
<tr>
 <td>Telefon</td>
 <td><input type="Text" name="fon" value="" size="50" maxlength="200"> </td>
</tr>
<tr>
 <td>Fax</td>
 <td><input type="Text" name="fax" value="" size="50" maxlength="200"> </td>
</tr>
   <tr>
    <td>Wie möchten Sie den Gutschein erhalten?</td>
     <td><select name="zustellung">
     <option value="post">per Post
     <option value="fax">per Fax
     <option selected value="mail">per E-mail
     </td>
   </tr>
</table>
<input type="submit" name="submitbutton" value="Absenden">
</FORM>
</body>
</html>

Hallo,

diese Fehlermeldung bekomme ich wenn ich es auf dem Server teste.
{
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in /srv/www/htdocs/web20/html/stuhlvertrieb/gutschein/mail_it2.php on line 5
{

Gruss
Joh

Gruß |

Sieht doch schonma ganz gut aus.

Der Fehler dürfte daher kommen, dass du einen generellen Fehler machst beim Verknüpfen von Variablen und Strings. Du musst da noch den Punktoperator (also .) dazwischensetzen.

Der Rest sieht so auf den ersten Blick ganz gut aus.

greez 8)
JoSsiF

Hi,

also ich habe jetzt einen ( .)
eingesetzt aber die Fehlermeldung bleibt gleich.

{
 $mailtext .= "Hallo Bearbeiter" ",\n" ;
 $mailtext .= "Herr/Frau" .= $_REQUEST[vorname] ",\n" ;
 $mailtext .= $_REQUEST[name] ",\n" ;
}

Ist das so gemeint gewesen?
((Oder so)
 $mailtext .= $_REQUEST[name] . ",\n" ; )
Und kann ich die Mailaddy so einsetzen?

Gruss
joh

Die zweite Variante ist eher richtig.
Also quasi so:

$stringvariable = "textteil1" . $string . "textteil2";
Die Mailadresse kannst du so einsetzen, eben die Zieladresse ;)

greez 8)
JoSsiF

Hi,

der Fehler ist aber schon in Zeile 5 also muss es etwas anderse sein denke ich.

Gruss
joh

Hm man kann hier schlecht ausmachen, was nun Zeile 5 ist.

Aber: überprüfe mal den Zusammenhang zwischen der Funktionsdeklaration von mail_senden() und deren Aufruf. Meinst du nicht, dass da was fehlt?

greez 8)
JoSsiF

hi

Zeile 5 ist das hier

Zitat
$mailtext = "Hallo Bearbeiter" ",\n" ;

da stimmt der Syntax nicht so ganz. versuchs mal so
Zitat
$mailtext = "Hallo Bearbeiter,\n" ;
$mailtext .= "Herr/Frau".$_REQUEST[vorname].",\n" ;
$mailtext .= $_REQUEST[name].",\n" ;
$mailtext .= $_REQUEST[ort].",\n" ;
$mailtext .= $_REQUEST[strasse].",\n" ;
$mailtext .= $_REQUEST[email].",\n" ;
$mailtext .= $_REQUEST[fon].",\n" ;
$mailtext .= $_REQUEST[fax].",\n" ;
$mailtext .= "möchte einen Gutschein haben." ;

vielleicht lags daran.

Gruß Jan

Hallo zusammen,

war gesern nicht online und habe mir die Sachen heute mal angesehen. Erstmal vielen Dank für Eure Hilfe.

Das Formular wird jetzt verschickt aber ich habe noch ein paar Fragen und es kommen immer noch Fehlermeldungen. Währe nett wenn mir nochmal jemand helfen könnte.

1. Wie bekomme ich ein Leerzeichen
an diese Stelle.
$mailtext .= "Herr/Frau".$_REQUEST[vorname].",\n" ;

Also zwischen Herr/Frau und $[vorname] ?

2. Kann ich $[vorname] und $[name] irrgendwie zusammensetzen?

3. Es wird beim versenden diese Meldung angezeigt.
{
Warning: Missing argument 3 for mail_senden() in /srv/www/htdocs/web20/html/stuhlvertrieb/gutschein/mail_it2.php on line 3

Warning: Missing argument 4 for mail_senden() in /srv/www/htdocs/web20/html/stuhlvertrieb/gutschein/mail_it2.php on line 3

Warning: Missing argument 5 for mail_senden() in /srv/www/htdocs/web20/html/stuhlvertrieb/gutschein/mail_it2.php on line 3

Warning: Missing argument 6 for mail_senden() in /srv/www/htdocs/web20/html/stuhlvertrieb/gutschein/mail_it2.php on line 3

Warning: Missing argument 7 for mail_senden() in /srv/www/htdocs/web20/html/stuhlvertrieb/gutschein/mail_it2.php on line 3
}

Wie kann man das noch verbessern bzw. ändern.

Hier noch das Skript:

<?php

function mail_senden($vorname, $name, $ort, $strasse, $email, $fon, $fax) {
 // Zuerst wird der Text zusammengesetzt
$mailtext = "Hallo Bearbeiter,\n" ;
$mailtext .= "Herr/Frau".$_REQUEST[vorname].",\n" ;
$mailtext .= $_REQUEST[name].",\n" ;
$mailtext .= $_REQUEST[ort].",\n" ;
$mailtext .= $_REQUEST[strasse].",\n" ;
$mailtext .= $_REQUEST[email].",\n" ;
$mailtext .= $_REQUEST[fon].",\n" ;
$mailtext .= $_REQUEST[fax].",\n" ;
$mailtext .= "moechte einen Gutschein haben." ;
 // Zus&#65533;zlich wird noch der Header definiert
 $header = "From: \"Gutschein\" <$email>" ;
 mail("[email protected]", "Gutschein", $mailtext, $header) ; ?>

<h1>Die E-Mail wurde erfolgreich verschickt.</h1><br>
<a href="javascript:history.go(-2);">Zurück</a>

<?php
} // Funktion mail_senden() zu Ende

function fehler() {
 //Keine PHP-Befehle erforderlich ?>

<h1>Fehlende Eingabe !</h1><br>
<a href="javascript:history.back();">Zurück</a>

<?php
} // Funktion fehler() zu Ende

?>
<HTML>
<HEAD>
 <TITLE>Mail-Test</TITLE>
</HEAD>

<BODY>
<?php

// Eigentlicher Kern des Skripts
if ( empty($name) || empty($email) ) {
 fehler() ;
} else {
 mail_senden($name, $email) ;
}

?>
</BODY>
</HTML>


Tut mir echt leid, dass es so lang geworden ist.

Gruss
Joh

Zitat
1. Wie bekomme ich ein Leerzeichen
an diese Stelle.
$mailtext .= "Herr/Frau".$_REQUEST[vorname].",\n" ;
Indem du einfach ein leerzeichen einfügst. Also
$mailtext .= "Herr/Frau ".$_REQUEST[vorname].",\n" ;
Zitat
2. Kann ich $[vorname] und $[name] irrgendwie zusammensetzen?
Einfach zusammensetzen wie oben auch schon
$mailtext .= "Herr/Frau ".$vorname." ".$nachname.",\n";
Zitat
3. Es wird beim versenden diese Meldung angezeigt.
{
Warning: Missing argument 3 for mail_senden() in /srv/www/htdocs/web20/html/stuhlvertrieb/gutschein/mail_it2.php on line 3

Warning: Missing argument 4 for mail_senden() in /srv/www/htdocs/web20/html/stuhlvertrieb/gutschein/mail_it2.php on line 3

Warning: Missing argument 5 for mail_senden() in /srv/www/htdocs/web20/html/stuhlvertrieb/gutschein/mail_it2.php on line 3

Warning: Missing argument 6 for mail_senden() in /srv/www/htdocs/web20/html/stuhlvertrieb/gutschein/mail_it2.php on line 3

Warning: Missing argument 7 for mail_senden() in /srv/www/htdocs/web20/html/stuhlvertrieb/gutschein/mail_it2.php on line 3
}
Du musst auch alles übergeben was die function verlangt.

in der funktion willst du
function mail_senden($vorname, $name, $ort, $strasse, $email, $fon, $fax) {
du übergibst aber nur
mail_senden($name, $email) ;

Hoffe das jetzt alle fehler ausgeräumt sind und ich nicht neue verursacht hab ;-)

Gruß Jan

Wegen den Warnungen... eine etwas unsaubere Programmierweise um die Warnungen wegzubekommen ist einfach ein "@" vor die mail()-Funktion zu schreiben, damit unterdrückst du bei so ziemlich vielen PHP-Funktionen die Warnungen. Manchmal gehts vielleicht auch gar nicht ohne "@". Aber wie schon von Jan geschrieben, bei der mail()-Funktion kannste wirklich die paar Parameter übergeben und auch ohne Warnungen auskommen.
Guck dir einfach mal die Funktionsreferenz zu mail() an:
http://de.php.net/manual/de/function.mail.php


Mario 8)

Hallo zusammen,

es klappt alles und nun auch ohne Fehlermeldungen.

Eine Frage habe trozdem noch.
Wie übergebe ich das Ergebniss aus einen Auswahlmenü?

Beispiel:

 <tr>
     <td>Farbe </td>
     <td><select name="farbe"  size"10">
     <option value="red">rot
     <option value="green">gr&uuml;n
     <option value="blue">blau
     <option selected value="black">schwarz
     </td>
   </tr>


Kann ich das einfach:

{
$mailtext .=$farbe."\n";
}

so einsetzen?

Gruss
joh

Im Prinzip ja. Die Variable $farbe speichert den übergebenen Wert (wobei ich trotzdem nochmal die Variante mit $_REQUEST[farbe] empfehle).

Aber deinen Formularaufbau solltest du nochmal prüfen, am besten ma nachgucken bei SelfHTML. So, wie's da steht, wird das nix ;)

greez 8)
JoSsiF

-- Korrektur:
Es wird auch so funktionieren, sofern du den select-Tag schließt. Die option-Tags sollte man aber dennoch schließen, wegen korrekter HTML-Notation ;)

« Letzte Änderung: 03.02.05, 20:17:38 von JoSsiF »

Hallo zusammen,

Du sagst:

>Es wird auch so funktionieren, sofern du
>den select-Tag schließt.

Da stehe ich auf der Leitung.
Wie wird select geschlossen?

Gruss
joh

so wie du alle tags schließt... mit </select>


« wo find ich: shopping.cgi?showHopper ??POPUP »
 

Fremdwörter? Erklärungen im Lexikon!
PHP
PHP steht für Personal Home Page und ist eine Skriptsprache die meist verwendet wird zur dynamischen Erzeugen von Internetseiten. PHP zeichnet sich durch die weite D...

Application Server
Ein Application Server, zu deutsch Anwedungsserver, ist ein Netzwerkrechner (Server) auf dem verschiedenste Anwendungsprogramme ausgeführt werden können. Der Be...

Printserver
Der Printserver ist ein Rechner im Netzwerk, der den Datenfluß zu einem oder mehreren Druckern steuert und eingehende Druckaufträge in einer Warteschlange verw...



Screenshot von ganzer Webseite machen – mit nur 3 Klicks!
Edge Browser: Google als Startseite (oder andere Webseiten!)