• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

[PHP] Beginner: Mail Form mit PHP senden plus Datensicherung

Lino

Grahams Jubiläumsapfel
Registriert
25.08.08
Beiträge
103
Hi Leute,

ich bin leider ein absoluter PHP Anfänger und habe keinen Plan wie ich das bewerkstelligen kann :/ Darum melde ich mich bei euch.

Ich habe hier im Forum schon gesucht und auch bei google, aber die Tutorials und Beispiele die ich da gefunden habe, haben mich eher verwirrt als aufgeklährt.

Nun mein Ziel wäre es:

Ich stelle eine Formular dar, der Bediener kann verschiedene Sachen eingeben und auswählen.

Am ende ist ein "Sende" Button der diese Form an eine bestimmte Person schickt (immer die gleiche Person) (Ohne das Mail Program zu öffnen) mit einer bestimmten Formatierung im Body und Betreff.

Wenn man in der Form auf "Senden" gedrückt hat wird die Form wieder zurückgesetzt so das der nächste wieder eine Eingabe machen kann.

Nun hätten wir aber gerne, dass die Daten die eingegeben werden in einer Excel Tabelle gespeichert (oder einer CSV Datei) und immer wieder erweitert werden. (ich hab keinen Plan ob sowas möglich ist.)

Um so einfacher das ganze System ist, um so besser :/
da ich ja kein Profi bin und auch mit klar kommen soll
icon_sad.gif


HTML habe ich mehr oder weniger im Griff..

Ich habe es schon mal auf den Server gepackt damit ihr es auch sehen könnt:
http://www.13thunit.com/test/test.html

Dort seht ihr auch meinen Disaster PHP code :/

Ich danke euch schon vielmals im Voraus für eueren Support.

Ich hoffe ich kriege dies bis montag hin :/
 

Lino

Grahams Jubiläumsapfel
Registriert
25.08.08
Beiträge
103
ich habe schon gegoogelt und in Foren geschaut.
Diese Sachen verwirren mich mehr als sie mir helfen :(

ich hab keinen Plan was an meinem Script nicht stimmt. ich verstehe PHP einfach nicht.. :/
 

walex

Süsser Pfaffenapfel
Registriert
15.07.09
Beiträge
663
Wie soll dir dann jemand helfen, wenn du schon die Grundlagen nicht verstehst.
Um Mails zu versenden, muss der Server, auf dem die Seite läuft, dafür konfiguriert sein. Beim Schreiben in Text- oder CSV-Datein müssen die Berechtigungen am Server dementsprechend eingestellt sein.
Deinen Code kann sich so übrigens niemand ansehen, weil PHP vom Server interpretiert wird und dem User nur das Ergebnis angezeigt wird.

Tipp: Jeder Google-Account bietet auch Text und Tabellen. Hier lassen sich Formulare anlegen, die dann in ein Google-Tabellen-Dokument geschrieben werden. Die bekommt man dann leicht in Excel. Alles geht ohne Programmierkenntnisse. Nachteil: Es liegt halt bei Google.
 

Lino

Grahams Jubiläumsapfel
Registriert
25.08.08
Beiträge
103
ich muss nur dieses Mail form mit PHP zum laufen bringen, ich möchte kein PHP profi werden. die einzige sorge ist nur diese Mail form.
Google geht nicht.. diese Mail Form soll intern in einer Firma sein ohne netzwerkzugriff (interne server etc.).

Zu dem sollen die Daten die mit dem Mailform gesammelt werden nicht an die aussenwelt dringen oder auf einem Server irgendwo draussen liegen.

Wenn mir jemand ein grobes beispiel basteln könnte was ich einfach nur erweitern könnte, wäre es hammer.

Wie kann ich den Code denn hier im Forum darstellen?
 

vcr80

Gestreifter Böhmischer Borsdorfer
Registriert
06.11.08
Beiträge
3.396
Also das Senden von e-Mails geht bei PHP mit
Code:
mail()
Am einfachsten ist es, wenn du die Daten per
Code:
file_put_contents()
in eine TXT-Datei packst (z.B. in jede Zeile ein mit , getrennter Datensatz)

Das Formular leert sich nach dem Betätigen des Senden-Buttons eh automatisch.
 
Zuletzt bearbeitet:

Lino

Grahams Jubiläumsapfel
Registriert
25.08.08
Beiträge
103
ok, so das ist nun mein PHP denn ich habe. funzt leider noch nicht wirklich :(

http://www.13thunit.com/test/test.html

[noparse]
<?php
if (isset($_POST['send'])) {
$to = '[email protected]'; // Use your own email address
$subject = 'Feedback from my site';
}
?>
<html>
<body>

<?php
$success = mail($to, $subject, $message);
?>


<?php
echo '<p>Abteilung: ' . $_POST['Abteilung'] . 'Verantwortlicher: ' . $_POST['Verantwortlicher'] . '</p>';

$Abteilung = array (
'Abteilung 01' => 'Abteilung 01'
'Abteilung 02' => 'Abteilung 02'
'Abteilung 03' => 'Abteilung 03'
'Abteilung 04' => 'Abteilung 04'
)

$Verantwortlicher = array (
'Name 01' => 'Name 01'
'Name 02' => 'Name 02'
'Name 03' => 'Name 03'
'Name 04' => 'Name 04'
)


echo '<p>Projekt: ' . $_POST['Projekt'] . 'Kostenstelle: ' . $_POST['Kostenstelle'] . 'IB Nr.: ' . $_POST['IB Nr.'] . '</p>';

echo '<p>Aufgabe: ' . $_POST['Aufgabe'] . 'Platten Nr.: ' . $_POST['Platten Nr.'] . 'Plattentyp: ' . $_POST['Plattentyp'] . '</p>';

$Aufgabe = array (
'Lieferung' => 'Lieferung'
'Rücklagerung' => 'Rücklagerung'
'Ausbohren' => 'Ausbohren'
'Entsorgung' => 'Entsorgung'
)

$Plattentyp = array (
'Platte 01' => 'Platte 01'
'Platte 02' => 'Platte 02'
'Platte 03' => 'Platte 03'
'Platte 04' => 'Platte 04'
)


echo '<p>Liefermoment: ' . $_POST['Liefermoment'] . 'Dringlichkeit: ' . $_POST['Dringlichkeit'] . 'Lieferdatum: ' . $_POST['Lieferdatum'] . '</p>';

$Liefermoment = array (
'Vormittags' => 'Vormittags' ,'Nachmittags' => 'Nachmittags' ,
)

$Dringlichkeit = array (
'Standart' => 'Standart' ,'Express' => 'Express' ,
)

file_put_contents(
$to = 'data.txt';
)


?>

</body>
</html>
[/noparse].
 

vcr80

Gestreifter Böhmischer Borsdorfer
Registriert
06.11.08
Beiträge
3.396
Ich habe keine Ahnung was du mit den ganzen Arrays vor hast. Aber hier ist mal mein Vorschlag zum versenden und zum speichern. Dein file_put_contents( $to = 'data.txt'; ) is wild.

Code:
<?php

    $dataString = implode(„,“, $_POST[]).“\n“;

    mail(„[email protected]“, „Betreff“, $dataString);

    file_put_contents(„./Pfad/Zur/Datei.txt“, $dataString, FILE_APPEND);

?>

(PHP-Code wurde nicht auf Fehler getestet und ist SEHR minimalistisch. Außerdem gehe ich von einer Übermittlung der Daten per POST)
 

bezierkurve

Halberstädter Jungfernapfel
Registriert
12.06.05
Beiträge
3.860
Da fehlen Parameter für Methoden und Variablen sind nicht deklariert. So etwas macht man nicht mal eben mit ein bisschen Copy and Paste. Und wenn dir ganz offensichtlich die elementaren Programmierkenntnisse fehlen, wirst du das definitiv nicht bis "Montag" lösen. Lasst das jemanden machen, der etwas davon versteht.

Nun hätten wir aber gerne, dass die Daten die eingegeben werden in einer Excel Tabelle gespeichert (oder einer CSV Datei) und immer wieder erweitert werden. (ich hab keinen Plan ob sowas möglich ist.)
Schon mal drüber nachgedacht, was passiert, wenn mehrere Nutzer Daten eingeben und nach einem Submit zeitgleich in die Datei geschrieben wird? Im schlimmsten Fall gehen hier Eingaben verloren. Für solche Zwecke nutzt man Datenbanken.
 
  • Like
Reaktionen: vcr80

Lino

Grahams Jubiläumsapfel
Registriert
25.08.08
Beiträge
103
Vielen dank vcr80 für deinen support,

ich habe den code mal eingefügt und den Pfad der datei angegeben, jedoch stimmt irgendwas immer noch nicht.
es spuckt mir wieder einen fehler aus.

@bezierkurve mir ist klar das PHP nicht von heute auf morgen gelernt wird und man sowas einfach so erstellen kann.

Das problem ist, dass "ich" erst mal einen Piloten für die Firma erstellen muss (was natürlich erstmal nichts kosten darf).

Sobald der Pilot präsentiert wurde und anklang in der Firma gefunden hat, wird geld investiert.

Um so besser der Pilot und um so fertiger er ist, um so weniger Geld und Arbeit muss danach investiert werden.
Ist leider so in den Firmen hier :/

der aktuelle PHP ist:
[noparse]
<?php
if (isset($_POST['send'])) {
$to = '[email protected]'; // Use your own email address
$subject = 'Feedback from my site';
}
?>
<html>
<body>

<?php
$success = mail($to, $subject, $message);
?>


<?php
echo '<p>Abteilung: ' . $_POST['Abteilung'] . 'Verantwortlicher: ' . $_POST['Verantwortlicher'] . '</p>';

echo '<p>Projekt: ' . $_POST['Projekt'] . 'Kostenstelle: ' . $_POST['Kostenstelle'] . 'IB Nr.: ' . $_POST['IB Nr.'] . '</p>';

echo '<p>Aufgabe: ' . $_POST['Aufgabe'] . 'Platten Nr.: ' . $_POST['Platten Nr.'] . 'Plattentyp: ' . $_POST['Plattentyp'] . '</p>';

echo '<p>Liefermoment: ' . $_POST['Liefermoment'] . 'Dringlichkeit: ' . $_POST['Dringlichkeit'] . 'Lieferdatum: ' . $_POST['Lieferdatum'] . '</p>';

?>

<?php

$dataString = implode(„,“, $_POST[]).“\n“;

mail(„[email protected]“, „Betreff“, $dataString);

file_put_contents(„../test/data.txt“, $dataString, FILE_APPEND);

?>

</body>
</html>

[/noparse]
 

vcr80

Gestreifter Böhmischer Borsdorfer
Registriert
06.11.08
Beiträge
3.396
1. Welcher Fehler wird ausgespuckt?
2. doppelt per Mail versenden brauchst du nicht
3. "mein" Code sollte ausgeführt werden, $_POST["send"] gesetzt ist
4. gib die Codes doch bitte in CODE-Tags
 

Lino

Grahams Jubiläumsapfel
Registriert
25.08.08
Beiträge
103
der Fehler der ausgespuckt wird ist:
Parse error: syntax error, unexpected '@' in /var/www/vhosts/13thunit.com/httpdocs/test/ausgabe.php on line 30

PHP:
<?php
if (isset($_POST['send'])) {
     $to = '[email protected]'; // Use your own email address
     $subject = 'Feedback from my site';
}
?>
<html>
<body>

<?php
$success = mail($to, $subject, $message);
?>


<?php
echo '<p>Abteilung: ' . $_POST['Abteilung'] . 'Verantwortlicher: ' . $_POST['Verantwortlicher'] . '</p>';

echo '<p>Projekt: ' . $_POST['Projekt'] . 'Kostenstelle: ' . $_POST['Kostenstelle'] . 'IB Nr.: ' . $_POST['IB Nr.'] . '</p>';

echo '<p>Aufgabe: ' . $_POST['Aufgabe'] . 'Platten Nr.: ' . $_POST['Platten Nr.'] . 'Plattentyp: ' . $_POST['Plattentyp'] . '</p>';

echo '<p>Liefermoment: ' . $_POST['Liefermoment'] . 'Dringlichkeit: ' . $_POST['Dringlichkeit'] . 'Lieferdatum: ' . $_POST['Lieferdatum'] . '</p>';

?>

<?php

    $dataString = implode(„,“, $_POST[send]).“\n“;

    mail(„[email protected]“, „Betreff“, $dataString);

    file_put_contents(„../test/data.txt“, $dataString, FILE_APPEND);

?>

    </body>
</html>
 

vcr80

Gestreifter Böhmischer Borsdorfer
Registriert
06.11.08
Beiträge
3.396
Versuch meine " mit ' auszutauschen, ich hab das nur schnell in TextEdit zusammengeschustert.
 

Lino

Grahams Jubiläumsapfel
Registriert
25.08.08
Beiträge
103
Hallo VCR80,

nun spuckt er mir folgende meldung aus:
Warning: implode() [function.implode]: Invalid arguments passed in /var/www/vhosts/13thunit.com/httpdocs/test/ausgabe.php on line 28

PHP:
<?php
if (isset($_POST['send'])) {
     $to = '[email protected]'; // Use your own email address
     $subject = 'Feedback from my site';
}
?>
<html>
<body>

<?php
$success = mail($to, $subject, $message);
?>


<?php
echo '<p>Abteilung: ' . $_POST['Abteilung'] . 'Verantwortlicher: ' . $_POST['Verantwortlicher'] . '</p>';

echo '<p>Projekt: ' . $_POST['Projekt'] . 'Kostenstelle: ' . $_POST['Kostenstelle'] . 'IB Nr.: ' . $_POST['IB Nr.'] . '</p>';

echo '<p>Aufgabe: ' . $_POST['Aufgabe'] . 'Platten Nr.: ' . $_POST['Platten Nr.'] . 'Plattentyp: ' . $_POST['Plattentyp'] . '</p>';

echo '<p>Liefermoment: ' . $_POST['Liefermoment'] . 'Dringlichkeit: ' . $_POST['Dringlichkeit'] . 'Lieferdatum: ' . $_POST['Lieferdatum'] . '</p>';

?>

<?php

    $dataString = implode(',', $_POST[send]).'\n';

    mail('[email protected]', 'Betreff', $dataString);

    file_put_contents('../test/data.txt', $dataString, FILE_APPEND);

?>

    </body>
</html>
[/B]
 

vcr80

Gestreifter Böhmischer Borsdorfer
Registriert
06.11.08
Beiträge
3.396
Kein wunder. $_POST[send] soll auch, wie von mir geschrieben $_POST[] sein.

mit meinem punkt 3 meinte ich, dass mein Code in die if-Schleife mit dem isset($_POST['send']) gehört. (Davon abgesehen, ist die fragmentierung deines Codes furchtbar.)

Aufgeräumt (aber noch lange nicht gut, oder gar perfekt) sehe das so aus:

PHP:
<html>
<body>

<?php

    if (isset($_POST['send'])) {
        $dataString = implode(',', $_POST[]).'\n';
 
       mail('[email protected]', 'Betreff', $dataString);
 
       file_put_contents('../test/data.txt', $dataString, FILE_APPEND);
    }

    echo '<p>Abteilung: ' . $_POST['Abteilung'] . 'Verantwortlicher: ' . $_POST['Verantwortlicher'] . '</p>';
 
    echo '<p>Projekt: ' . $_POST['Projekt'] . 'Kostenstelle: ' . $_POST['Kostenstelle'] . 'IB Nr.: ' . $_POST['IB Nr.'] . '</p>';
 
    echo '<p>Aufgabe: ' . $_POST['Aufgabe'] . 'Platten Nr.: ' . $_POST['Platten Nr.'] . 'Plattentyp: ' . $_POST['Plattentyp'] . '</p>';
 
    echo '<p>Liefermoment: ' . $_POST['Liefermoment'] . 'Dringlichkeit: ' . $_POST['Dringlichkeit'] . 'Lieferdatum: ' . $_POST['Lieferdatum'] . '</p>';

?>
</body>
</html>
 
  • Like
Reaktionen: ImpCaligula

Lino

Grahams Jubiläumsapfel
Registriert
25.08.08
Beiträge
103
wie gesagt ich bin habe null Plan von PHP :/

darum bin ich über jede hilfe sehr dankbar.

Habe ich nun hoffentlich richtig geändert, bekomme aber immernoch folgenden Fehler:
Fatal error: Cannot use [] for reading in /var/www/vhosts/13thunit.com/httpdocs/test/ausgabe.php on line 5


PHP:
<?php
if (isset($_POST['send'])) {
     $to = '[email protected]'; // Use your own email address
     $subject = 'Feedback from my site';
     $dataString = implode(',', $_POST[]).'\n';
     
         mail('[email protected]', 'Betreff', $dataString);
     
         file_put_contents('./test/data.txt', $dataString, FILE_APPEND);
     
     
}
?>
<html>
<body>

<?php
$success = mail($to, $subject, $message);
?>


<?php
echo '<p>Abteilung: ' . $_POST['Abteilung'] . 'Verantwortlicher: ' . $_POST['Verantwortlicher'] . '</p>';

echo '<p>Projekt: ' . $_POST['Projekt'] . 'Kostenstelle: ' . $_POST['Kostenstelle'] . 'IB Nr.: ' . $_POST['IB Nr.'] . '</p>';

echo '<p>Aufgabe: ' . $_POST['Aufgabe'] . 'Platten Nr.: ' . $_POST['Platten Nr.'] . 'Plattentyp: ' . $_POST['Plattentyp'] . '</p>';

echo '<p>Liefermoment: ' . $_POST['Liefermoment'] . 'Dringlichkeit: ' . $_POST['Dringlichkeit'] . 'Lieferdatum: ' . $_POST['Lieferdatum'] . '</p>';

?>

    </body>
</html>
[/PHP
 

vcr80

Gestreifter Böhmischer Borsdorfer
Registriert
06.11.08
Beiträge
3.396
Ja, ich weiß, war auch weniger als Vorwurf als als Verbesserungsvorschlag gemeint ;)
Und ja, wenn darauf viele Leute zur gleichen Zeit zugriff haben, dann solltest du eine Datenbank (MySQL z.B.) in Erwägung ziehen.
Sorry, mein Fehler. es sollte natürlich $_POST und nicht $_POST[] heißen in Zeile 5.

Warum wehrst du dich, gegen meine verunkomplizierung des Codes?

PHP:
<html>
<body>

<?php

    if (isset($_POST['send'])) {
       $dataString = implode(',', $_POST).'\n';

       mail('[email protected]', 'Betreff', $dataString);

       file_put_contents('../test/data.txt', $dataString, FILE_APPEND);
    }

    echo '<p>Abteilung: ' . $_POST['Abteilung'] . 'Verantwortlicher: ' . $_POST['Verantwortlicher'] . '</p>';

    echo '<p>Projekt: ' . $_POST['Projekt'] . 'Kostenstelle: ' . $_POST['Kostenstelle'] . 'IB Nr.: ' . $_POST['IB Nr.'] . '</p>';

    echo '<p>Aufgabe: ' . $_POST['Aufgabe'] . 'Platten Nr.: ' . $_POST['Platten Nr.'] . 'Plattentyp: ' . $_POST['Plattentyp'] . '</p>';

    echo '<p>Liefermoment: ' . $_POST['Liefermoment'] . 'Dringlichkeit: ' . $_POST['Dringlichkeit'] . 'Lieferdatum: ' . $_POST['Lieferdatum'] . '</p>';

?>
</body>
</html>

Übrigens:
1. Musst du natürlich noch die e-Mail-Adresse abwandeln.
2. Passiert bei file_put_contents('../test/data.txt', $dataString, FILE_APPEND); folgendes: Du gehts aus dem Ordner, in dem sich das Script befindet raus und dann in einen Ordner "test" rein. Ist der Ordner "test" eh nicht der, in dem dein Script liegt? Weil dann würdest du aus dem Ordner raus gehen und wieder rein. Das hat übrigens nix mit PHP zu tun ;)
 

hillepille

Melrose
Registriert
19.07.09
Beiträge
2.508
Hi, hab mir den Code nicht weiter angeschaut, denk bitte daran, dass du das VZ in dem die textdatei liegt (würde ich aber aus Sicherheitsaspekten nicht machen) oder die Textdatei (bessere Lösung) selber mit den entsprechenden Rechten (777) ausstatten musst damit da reingeschrieben werden kann.
 

Lino

Grahams Jubiläumsapfel
Registriert
25.08.08
Beiträge
103
Hallo Zusammen,

habe den Code von VCR80 hineinkopiert. Die Textdatei liegt im gleichen Ordner wie die ausgabe.php. Die Textdatei ist beschreibbar (777).

Es wird aber leider nichts in die Textdatei geschrieben :/
Oder wird erst beim erfolgreichem Mail senden die Textdatei beschrieben?

PHP:
<html>
<body>

<?php

    if (isset($_POST['send'])) {
       $dataString = implode(',', $_POST).'\n';

       mail('[email protected]', 'Betreff', $dataString);

       file_put_contents('../data.txt', $dataString, FILE_APPEND);
    }

    echo '<p>Abteilung: ' . $_POST['Abteilung'] . 'Verantwortlicher: ' . $_POST['Verantwortlicher'] . '</p>';

    echo '<p>Projekt: ' . $_POST['Projekt'] . 'Kostenstelle: ' . $_POST['Kostenstelle'] . 'IB Nr.: ' . $_POST['IB Nr.'] . '</p>';

    echo '<p>Aufgabe: ' . $_POST['Aufgabe'] . 'Platten Nr.: ' . $_POST['Platten Nr.'] . 'Plattentyp: ' . $_POST['Plattentyp'] . '</p>';

    echo '<p>Liefermoment: ' . $_POST['Liefermoment'] . 'Dringlichkeit: ' . $_POST['Dringlichkeit'] . 'Lieferdatum: ' . $_POST['Lieferdatum'] . '</p>';

?>
</body>
</html>