Kontakt-Formular mit CSV-Speicherung

Allgemeine Fragen
whippet
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 108
Registriert: Sa 10. Apr 2021, 10:56
Wohnort: Berlin

Kontakt-Formular mit CSV-Speicherung

Ungelesener Beitrag von whippet »

Hallo,

ich habe den Test-Formular (von der Mobirise-Tutorials-Seite) mit CSV-Speicherung probiert, aber es kommt nur der Text mit den Angaben, aber die csv-Datei ist nicht dabei. Woran liegt es?

Beste Grüße Peter
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Kontakt-Formular mit CSV-Speicherung

Ungelesener Beitrag von Tommy Herrmann »

Moin,

... meinst Du jetzt dieses Test-Formular von mir?

https://www.mobirise-tutorials.com/Form ... ar-csv.php

... bitte immer URL (Link) mit posten, damit man weiß wovon gesprochen wird. Ich habe ungefähr 200 Formulare am Server.

Das ist doch nur die Mail (als Kopie), die Du erhalten hast, die CSV-Datei wird doch nicht mitgeschickt, sondern nur zusätzlich (bei mir) mit am Server gespeichert.

CSV-Datei.JPG
whippet
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 108
Registriert: Sa 10. Apr 2021, 10:56
Wohnort: Berlin

Re: Kontakt-Formular mit CSV-Speicherung

Ungelesener Beitrag von whippet »

Hallo Tommy, genau den meine ich!:) Gruß Peter
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Kontakt-Formular mit CSV-Speicherung

Ungelesener Beitrag von Tommy Herrmann »

Da habe ich ein ganz normales Formular vom "Formular Generator" vom Werner erstellt und dann noch das hier unten im Script hinzugefügt:

Code: Alles auswählen

  // Von Tommy hier die CSV-Eintragung hinzugefügt
  // Daten in einer CSV-Datei speichern (Vorschlag) - Bitte anpassen!

  // Dateiname - Die Datei benötigt Schreibrechte.
  $Datei = "csv/datei.csv";

  // Daten (Strichpunkt separiert)
  $Text = "$vorname;$nachname;$email;$anreisetag;$anreisezeit;$abreisetag;$abreisezeit;$nachricht;\n";

  // Daten speichern
  $Fh = fopen($Datei, "a+");
  if (fwrite($Fh, $Text)) {
   echo "<p>Die Daten wurden eingetragen.</p>";
  }
  else {
   echo "<p>Fehler beim eintragen der Daten!</p>";
  }
  fclose($Fh);  
... also vor dieser Meldung eingefügt:

Code: Alles auswählen

  // Weiterleitung
  echo "<p><a href='" . $Weiterleitung . "' target='_top'>Weiter</a></p>";

Im Prinzip kannst Du das Formular 2 x mit dem "Formular Generator" vom Werner erstellen. Einmal als Mail und einmal auf der ersten Seite gleich oben bei "Formulardaten" (senden als) wählen "In einer CSV-Datei speichern".

Dann habe ich mir diese Stelle mit der Datei einfach in das erste Mail-Skript noch rein kopiert (wenn man das will).

Das ist so von Werner über den "Formular Generator" nicht vorgesehen - dort geht nur "entweder / oder".
whippet
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 108
Registriert: Sa 10. Apr 2021, 10:56
Wohnort: Berlin

Re: Kontakt-Formular mit CSV-Speicherung

Ungelesener Beitrag von whippet »

Hallo Tommy,

ich habe es exakt genau so gemacht, wie beschrieben. Jedoch ist dann keine scv-Datei dabei, genauso wie bei deinem Test-Formular. Auch da kommt keine csv-Datei an.

Wo landet diese csv-Datei bei dir hin?

Gruß Peter
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Kontakt-Formular mit CSV-Speicherung

Ungelesener Beitrag von Tommy Herrmann »

na hier:

Code: Alles auswählen

$Datei = "csv/datei.csv";
Ich habe am Server ein Verzeichnis:

csv

erstellt. Also das Verzeichnis "csv" liegt hier im gleichen Verzeichnis wie die Seite mit dem Script (bei mir also mit dem Formular).

Das muss Schreibrechte (705) für den Eigentümer (also den Server haben):


Verzeichnis.JPG
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Kontakt-Formular mit CSV-Speicherung

Ungelesener Beitrag von Tommy Herrmann »

im Verzeichnis:

csv

CSV.JPG

habe ich noch eine .htaccess Datei gepackt mit folgendem Inhalt:

Code: Alles auswählen

Order Deny,Allow
Deny from all
... sodass da von außen niemand rankommt (gesperrt für alle von außen). Deswegen habe ich die CSV-Datei ja hauptsächlich auch in ein eigenens Verzeichnis gepackt, damit ich das sperren kann.
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Kontakt-Formular mit CSV-Speicherung

Ungelesener Beitrag von Tommy Herrmann »

Nee warte mal - ich glaube ich sehe gerade, dass ich diese CSV-Datei wohl einfach als leere Datei mit einem Editor (wie z.B. "Notepad++") erstellt hatte und dann eben als:

datei.csv

gespeichert habe und diese dann in das Verzeichnis "csv" als leere Datei kopiert habe. Das Script öffnet ja diese CSV-Datei lediglich zum Beschreiben.

$Fh = fopen($Datei, "a+");

das "a+" steht für "append" (anhängen).
whippet
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 108
Registriert: Sa 10. Apr 2021, 10:56
Wohnort: Berlin

Re: Kontakt-Formular mit CSV-Speicherung

Ungelesener Beitrag von whippet »

Ja, über diese Stelle bin ich auch schon gestolpert, aber ich wusste dann nicht wie da alles zusammen hängt. Und was wäre jetzt die Lösung?:)

Gruß Peter
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Kontakt-Formular mit CSV-Speicherung

Ungelesener Beitrag von Tommy Herrmann »

Das hatte ich doch gerade geschrieben.

Erstelle eine neue Datei ohne Inhalt mit z.B. Deinem Windows-Editor (oder "Notepad++") und speichere diese als z.B.:

datei.csv

... eben so, wie im Skript eingetragen.

Kopiere sie in das im Skript angegebene Verzeichnis (bei mir heißt das "csv") und fertig.

fopen($Datei, "a+")

fopen = file open (öffne Datei)
$Datei = Variable, des Dateinamens, der etwas höher eingetragen wird, nämlich hier: $Datei = "csv/datei.csv";
"a+" = append = hänge die Einträge vom Formular an diese Datei ran
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Kontakt-Formular mit CSV-Speicherung

Ungelesener Beitrag von Tommy Herrmann »

Hier mal mein gesamtes Skript - habe lediglich meine E-Mail wieder entfernt und mit

mail@example.com

ersetzt. Vielleicht hilft das ja:

Code: Alles auswählen

<!DOCTYPE html>
<html lang="de">
 <head>
  <meta charset="UTF-8">
  <title></title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- Den Dateipfad zu Bootstrap eventuell anpassen! -->
  <link rel="stylesheet" href="bootstrap.min.css">

  <style>
  body {      
   background-color: #efefef;
  }
  body, textarea {
   font-family: Verdana, Sans-Serif;
   font-size: 1rem;
   padding: 20px;
  }

  span.pflichtfeld {
   font-size: 0.90rem;
   color: Red;
  }

  span.hilfetext {
   font-family: Arial, Tahoma, Sans-Serif;
   font-size: 0.80rem;
   font-style: Oblique;
   color: #009500;
  }
  </style>

  <script>
  // Tastatureingaben zählen
  function CheckLen7() {
   document.getElementById("Zeichen7").innerHTML = document.Form.nachricht.value.length;
  }
  </script>

 </head>
<body>

<h3>Kontakt-Formular mit CSV-Speicherung</h3>
<p><a href="../kontakt.php">zu meiner Mobirise Formular-Seite</a></p>

<?php
/*
   Aktion: Formulardaten als E-Mail versenden.
   Formular - PHP 5.4+, Zeichenkodierung: UTF-8
   Siehe: https://werner-zenk.de/tipps/schriftzeichen_richtig_darstellen.php

   Erstellt mit dem Formular Generator (11.04.2021) - 
   https://werner-zenk.de/tools/formulargenerator.php

   Bitte testen Sie das Formular ausführlich und
   beachten Sie die Hinweise im Quelltext!
*/

// PHP Fehlermeldungen (1 um das Formular zu testen) anzeigen.
error_reporting(1); // (0/1)

// Weiterleitung - Nach dem absenden des Formulars,
// gelangt der Benutzer über einen Link auf folgende Seite:
$Weiterleitung = "formular-csv.php"; // Relativer Pfad, ausgehend vom Formular.

$vorname = isset($_POST["vorname"]) ? strip_tags(trim($_POST["vorname"])) : ""; // Vorname
$nachname = isset($_POST["nachname"]) ? strip_tags(trim($_POST["nachname"])) : ""; // Nachname
$email = isset($_POST["email"]) ? strip_tags(trim($_POST["email"])) : ""; // E-Mail
$anreisetag = isset($_POST["anreisetag"]) ? $_POST["anreisetag"] : date("Y-m-d"); // Anreisetag
$anreisezeit = isset($_POST["anreisezeit"]) ? $_POST["anreisezeit"] : date("H:i"); // Anreisezeit
$abreisetag = isset($_POST["abreisetag"]) ? $_POST["abreisetag"] : date("Y-m-d"); // Abreisetag
$abreisezeit = isset($_POST["abreisezeit"]) ? $_POST["abreisezeit"] : date("H:i"); // Abreisezeit
$mindatum = date("Y-m-d"); // Datum zur Prüfung ab wann von Tommy hinzugefügt
$maxdatum = date('Y-m-d', strtotime("+28 days")); // Datum zur Prüfung bis wann von Tommy hinzugefügt, hier 28 Tage
$nachricht = isset($_POST["nachricht"]) ? strip_tags(trim($_POST["nachricht"])) : ""; // Nachricht
$KopieCk = isset($_POST["Kopie"]) ? " checked='checked'" : null; // E-Mail Kopie

// Benutzereingaben überprüfen
// Die Meldungen müssen hier eventuell angepasst werden.
$Fehler = ["vorname"=>"", "nachname"=>"", "email"=>"", "anreisetag"=>"", "anreisezeit"=>"", 
 "abreisetag"=>"", "abreisezeit"=>"", "nachricht"=>"", "sicherheit"=>""];
if (isset($_POST["submit"])) {
 $Fehler["vorname"] = strlen($_POST["vorname"]) < 1 ? " Bitte füllen Sie dieses Feld aus!" : "";
 $Fehler["nachname"] = strlen($_POST["nachname"]) < 1 ? " Bitte füllen Sie dieses Feld aus!" : "";
 $Fehler["email"] = strlen($_POST["email"]) < 1 ? " Bitte füllen Sie dieses Feld aus!" : "";
 $Fehler["anreisetag"] = strlen($_POST["anreisetag"]) < 2 ? " Bitte füllen Sie dieses Feld aus (min. 2 Zeichen)!" : "";
 $Fehler["anreisezeit"] = strlen($_POST["anreisezeit"]) < 1 ? " Bitte füllen Sie dieses Feld aus!" : "";
 $Fehler["abreisetag"] = strlen($_POST["abreisetag"]) < 1 ? " Bitte füllen Sie dieses Feld aus!" : "";
 $Fehler["abreisezeit"] = strlen($_POST["abreisezeit"]) < 1 ? " Bitte füllen Sie dieses Feld aus!" : "";
 $Fehler["abreisetag"] = $_POST["abreisetag"] <= $_POST["anreisetag"] ? " Aufenthalt mindestens 1 Tag!" : $Fehler["abreisetag"];
 $Fehler["nachricht"] = strlen($_POST["nachricht"]) < 10 ? " Bitte füllen Sie dieses Feld aus (min. 10 Zeichen)!" : "";
 $Fehler["nachricht"] .= strlen($_POST["nachricht"]) > 5000 ? " Es sind maximal 5000 Zeichen erlaubt!" : "";
 $Fehler["sicherheit"] = (md5($_POST["zip"]) != $_POST["zip2"]) ? "Die Rechenaufgabe ist leider falsch!" : "";
}

// Sicherheitsabfrage - Rechenaufgabe
$Z0 = [mt_rand(1, 9), mt_rand(1, 9)];
$Z1 = max($Z0); $Z2 = min($Z0);
$Spam = $Z1 . " &#43; &#" . (48 + $Z2) . ";";
$Schutz = md5($Z1 + $Z2);

// Formular erstellen
$Formular = "
<form name='Form' action='" . $_SERVER["SCRIPT_NAME"] . "' method='post'>

<p>
 <label> Vorname:
<span class='pflichtfeld'>&#10034; " . $Fehler["vorname"] . "</span><br>
  <input type='text' name='vorname' value='" . $vorname . "' size='35' required='required' class='form-control' tabindex='1'>
 </label>
</p>

<p>
 <label> Nachname:
<span class='pflichtfeld'>&#10034; " . $Fehler["nachname"] . "</span><br>
  <input type='text' name='nachname' value='" . $nachname . "' size='35' required='required' class='form-control' tabindex='2'>
 </label>
</p>

<p>
 <label> E-Mail:
<span class='pflichtfeld'>&#10034; " . $Fehler["email"] . "</span><br>
  <input type='email' name='email' value='" . $email . "' size='35' required='required' class='form-control' tabindex='3'>
 </label>
</p>

<p>
 <label> Anreisetag:
<span class='pflichtfeld'>&#10034; " . $Fehler["anreisetag"] . "</span><br>
  <input type='date' name='anreisetag' min='" . $mindatum . "' value='" . $anreisetag . "' size='35' required='required' class='form-control' tabindex='4'>
 </label>
</p>

<p>
 <label> Anreisezeit:
<span class='pflichtfeld'>&#10034; " . $Fehler["anreisezeit"] . "</span><br>
  <input type='time' name='anreisezeit' value='" . $anreisezeit . "' size='35' required='required' class='form-control' tabindex='5'>
 </label>
</p>

<p>
 <label> Abreisetag (min. 1 Tag max. 28 Tage):
<span class='pflichtfeld'>&#10034; " . $Fehler["abreisetag"] . "</span><br>
  <input type='date' name='abreisetag' min='" . $mindatum . "' max='" . $maxdatum . "' value='" . $abreisetag . "' size='35' required='required' class='form-control' tabindex='6'>
 </label>
</p>

<p>
 <label> Abreisezeit:
<span class='pflichtfeld'>&#10034; " . $Fehler["abreisezeit"] . "</span><br>
  <input type='time' name='abreisezeit' value='" . $abreisezeit . "' size='35' required='required' class='form-control' tabindex='7'>
 </label>
</p>

<p>
 <label> Nachricht:
 <span class='pflichtfeld'>&#10034; " . $Fehler["nachricht"] . "</span><br>
  <small><strong id='Zeichen7'>0</strong> Zeichen</small><br>
 <textarea name='nachricht' cols='40' rows='8' maxlength='5000' required='required' class='form-control' onKeyUp='CheckLen7()' tabindex='8'>" . $nachricht . "</textarea>
 </label>
</p>

<p>
 <label> 
 <input type='checkbox' name='Kopie'" . $KopieCk . ">
 Eine Kopie dieser Nachricht an meine E-Mail Adresse
 </label>
</p>

<p>
 <label> Sicherheitsabfrage: 
 <span class='pflichtfeld'>&#10034; " . $Fehler["sicherheit"] . "</span><br>
 <em>" . $Spam . "</em> = 
 <input type='text' name='zip' size='4' pattern='[0-9]{1,2}' required='required' autocomplete='off'>
 </label>
 <input type='hidden' name='zip2' value='" . $Schutz . "'>
 <br><span class='hilfetext'> Bitte lösen Sie die Rechenaufgabe. </span><br>
</p>

<p>
 <br>
 <input type='submit' name='submit' value='Senden' class='btn btn-secondary' tabindex='9'>
</p>

<p>
 <small>Bitte alle mit <span class='pflichtfeld'>&#10034;</span>
 markierten Felder ausfüllen.</small>
</p>

</form>

<script>CheckLen7();</script>
";

// Formular abgesendet
if (isset($_POST["submit"])) {

 // Sind keine Benutzer-Eingabefehler vorhanden
 if (implode("", $Fehler) == "") {

  // Datum (ISO) ins deutsche Format umwandeln
  if (substr_count($anreisetag, "-") == 2) {
   list($jahr, $monat, $tag) = explode("-", $anreisetag);
   if (strlen($jahr) == 4) {
    $anreisetag = "$tag.$monat.$jahr";
   }
  }

  // Datum (ISO) ins deutsche Format umwandeln
  if (substr_count($abreisetag, "-") == 2) {
   list($jahr, $monat, $tag) = explode("-", $abreisetag);
   if (strlen($jahr) == 4) {
    $abreisetag = "$tag.$monat.$jahr";
   }
  }

  // Daten als E-Mail versenden (Vorschlag) - Bitte anpassen!

  // Zeitzone und das aktuelle Datum setzen
  // http://de3.php.net/manual/de/timezones.europe.php
  date_default_timezone_set("Europe/Berlin");
  $Datum = date("d.m.Y H:i");

  // Protokollieren
  $Ip = $_SERVER["REMOTE_ADDR"];

  // Empfänger E-Mail
  // Eine beim Provider registrierte E-Mail Adresse verwenden!
  $Mailto = "mail@example.com";
  $betreff = "Nachricht"; // Betreff

  // Inhalt der E-Mail setzen
  $Text = "   Gesendet vom CSV-Formular am: $Datum Uhr
   Vorname: $vorname
   Nachname: $nachname
   E-Mail: $email
   Anreisetag: $anreisetag
   Anreisezeit: $anreisezeit
   Abreisetag: $abreisetag
   Abreisezeit: $abreisezeit
   Nachricht: $nachricht

   IP: $Ip
  ";

  // E-Mail versenden
  mb_internal_encoding("UTF-8");
  $Betreff = mb_encode_mimeheader($betreff, "UTF-8", "Q");
  $Kopfzeile = "MIME-Version: 1.0;\nFrom: " .
   "<" . $email . ">" . "\nContent-Type: text/plain; Charset=UTF-8;\n";

  if (mail($Mailto, $Betreff, $Text, $Kopfzeile)) {

   echo "<p>Vielen Dank, die Nachricht wurde versendet.</p>";
  }
  else {

   // Wenn die Daten nicht versendet werden konnten,
   // wird die E-Mail-Adresse für den direkten Kontakt eingeblendet.
   echo "<p>Beim Senden der Nachricht ist ein Fehler aufgetreten!<br>" . 
   "Bitte wenden Sie sich direkt an: <a href='mailto:" . $Mailto . "'>" . $Mailto . "</a></p>";
  }

  // E-Mail Kopie versenden (Vorschlag) - Bitte anpassen!

  if (isset($_POST["Kopie"])) {

   // Diese Nachricht wird an die E-Mail-Adresse des Besuchers gesendet.

   // Name/Signatur
   $Signatur = "";

   // Betreff
   $Betreff = "Kopie einer Nachricht";

   // Inhalt der E-Mail setzen
   $Text = "   Vielen Dank für Ihren Besuch bei ...
   Wir haben folgende Nachricht erhalten:

   Vorname: $vorname
   Nachname: $nachname
   E-Mail: $email
   Anreisetag: $anreisetag
   Anreisezeit: $anreisezeit
   Abreisetag: $abreisetag
   Abreisezeit: $abreisezeit
   Nachricht: $nachricht

   Mit freundlichen Grüßen
    $Signatur  
   ";

   // E-Mail Kopie versenden
   mb_internal_encoding("UTF-8");
   $Betreff = mb_encode_mimeheader($Betreff, "UTF-8", "Q");
   $Kopfzeile = "MIME-Version: 1.0;\nFrom: " . mb_encode_mimeheader($Signatur, "UTF-8", "Q") .
    "<" . $Mailto . ">" . "\nContent-Type: text/plain; Charset=UTF-8;\n";
   if (mail($email, $Betreff, $Text, $Kopfzeile)) {
    echo "<p>Sie erhalten eine Kopie der Nachricht an Ihre E-Mail-Adresse.</p>";
   }
  }
  
  // Von Tommy hier die CSV-Eintragung hinzugefügt
  // Daten in einer CSV-Datei speichern (Vorschlag) - Bitte anpassen!

  // Dateiname - Die Datei benötigt Schreibrechte.
  $Datei = "csv/datei.csv";

  // Daten (Strichpunkt separiert)
  $Text = "$vorname;$nachname;$email;$anreisetag;$anreisezeit;$abreisetag;$abreisezeit;$nachricht;\n";

  // Daten speichern
  $Fh = fopen($Datei, "a+");
  if (fwrite($Fh, $Text)) {
   echo "<p>Die Daten wurden eingetragen.</p>";
  }
  else {
   echo "<p>Fehler beim eintragen der Daten!</p>";
  }
  fclose($Fh);  

  // Weiterleitung
  echo "<p><a href='" . $Weiterleitung . "' target='_top'>Weiter</a></p>";
 }
 else {

  // Formular und Benutzer-Eingabefehler ausgeben
  echo $Formular;
 }
}
else {

 // Formular ausgeben
 echo $Formular;
}
?>



</body>
</html>
whippet
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 108
Registriert: Sa 10. Apr 2021, 10:56
Wohnort: Berlin

Re: Kontakt-Formular mit CSV-Speicherung

Ungelesener Beitrag von whippet »

Danke. Emails kommen an, aber die csv-Datei ist nach wie vor nicht dabei. Ich glaube, ich habe da einen richtig dicken Brett vorm Kopf ...
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Kontakt-Formular mit CSV-Speicherung

Ungelesener Beitrag von Tommy Herrmann »

Moin,

nochmals, es kommt auch keine CSV Datei irgendwo an - die wird nicht mit der Mail mit geschickt.

Du selbst erstellst doch zunächst diese CSV-Datei mit der Dateierweiterung .csv wie meinetwegen:

datei.csv

... die Du mit einem FTP-Programm, wie z.B. "FileZilla", zunächst leer auf den Server kopierst - so wie von mir oben beschrieben - in meinetwegen ein auch von Dir am Server erstelltes Verzeichnis, das Du "csv" genannt hast.

Dort wird diese CSV-Datei dann mit dem Inhalt der Mails beschrieben. Mit jeder Mail kommt eine neue Zeile hinzu.

Natürlich muss die Pfadangabe zum Verzeichnis "csv" auch im Skript korrekt eingetragen sein, wie es in meinem Beispiel oben ja auch der Fall ist.

Die durch den Mail-Versand befüllte CSV-Datei kannst Du dann, wiederum mit dem FTP-Programm, vom Server downloaden und einsehen.

... oder was meinst Du mit "ankommen"?
whippet
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 108
Registriert: Sa 10. Apr 2021, 10:56
Wohnort: Berlin

Re: Kontakt-Formular mit CSV-Speicherung

Ungelesener Beitrag von whippet »

Ich verstehe jetzt etwa die Struktur dahinter, aber das wäre in der Praxis auch extrem umständlich mit den Daten so zu handeln. Mein Ziel ist es den Ablauf zu vereinfachen, sodass ich bei einer Buchung die Kundendaten nicht Zeile für Zeile in die Rechnungssoftware umschreiben muss, was dann wenn ich z. B. unterwegs bin, sehr anstrengend ist und ich mich dazu oft vertippe. Gibt es da keine Möglichkeit (durch einen kleinen Skript) die csv-Datei direkt in die Antwortemail zu bekommen? Gruß Peter
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Kontakt-Formular mit CSV-Speicherung

Ungelesener Beitrag von Tommy Herrmann »

Man kann sicherlich die aktuelle CSV-Datei mit an die Mail hängen.

Das will ich jetzt aber nicht machen, denn da darf kein Fehler bei entstehen.

Du kannst ja mal eine "PN" an Werner-Zenk.de schreiben, vielleicht schreibt er den Generator entsprechend um (was ich nicht glaube) oder postet Dir eine individuelle Lösung.

Natürlich darf dabei diese CSV-Datei nicht in falsche Hände geraten, denn dort stehen ja dann alle Buchungen mit ganz unterschiedlichen Teilnehmern und persönlichen Daten drinnen.

Deswegen bekommt man ja die einzelnen Daten bereits mit der E-Mail gesendet. Es macht ja auch nicht wirklich Sinn immer die gleiche Datei gesendet zu bekommen, wenn eine Buchung dazu kommt. Irgendwann wird diese Datei ja auch ziemlich groß und kann dann gegebenenfalls als E-Mail gar nicht mehr im Anhang gesendet werden.

Die Provider beschränken die Größe von E-Mail Anhängen. Mein Provider "1&1" z.B. auf 20MB - andere viel weniger.
whippet
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 108
Registriert: Sa 10. Apr 2021, 10:56
Wohnort: Berlin

Re: Kontakt-Formular mit CSV-Speicherung

Ungelesener Beitrag von whippet »

Danke! Bevor ich damit den Werner anspreche, ist es nicht möglich nur einen Datensatz zu speichern (oder zu verschicken) gleich nach dem ein Formular ausgefüllt wird? Bei dem Formular von Volker der mit https://da-software.net/ erstellt wurde, kriegt man sowohl ein PDF als auch eine xls-Datei per Email geliefert. Nun die xls-Datei muss dann auch wieder in csv konvertiert werden was dann wieder weitere 10 Schritte bedeutet. Die zwei Formate (xls und csv) sind beinah gleich aufgebaut, ich frage mich wirklich, wieso ist es so ein unüberwindbares Problem direkt eine csv-Datei zu bekommen?
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Kontakt-Formular mit CSV-Speicherung

Ungelesener Beitrag von Tommy Herrmann »

ja - ich habe aber die Tage keine Zeit das da mit einzubauen.

Google mal nach:

CSV Datei erstellen php

... dann findest Du so etwas hier:

https://falconbyte.net/blog-php-csv.php

Mit der Funktion "fputcsv" wird die Datei mit den Feldern erstellt:

http://phpweb.hostnet.com.br/manual/de/ ... putcsv.php

Dann müsste man aber so eine Art Zähler mit am Server hinterlegen, der mit jeder Mail eine neue CSV-Datei erstellt, also meinetwegen:

datei0001.csv
datei0002.csv
usw.

So einen Zähler hatte ich schon mal hier eingebaut:

https://mobirise-tutorials.com/Formular/

... mit jeder Mail wird der Zähler um 1 erhöht. Hier meine Tutorial-Seite dazu (noch mit NOF):

http://www.tommyherrmanndesign.com/nof/ ... ckzaehler/

Außerdem muss im Skript eben noch mit eingetragen werden, dass die CSV-Datei mitgeschickt wird. Das müsste wohl eher Werner machen, denn so gut kenne ich mich mit all den PHP-Befehlen auch nicht aus.
whippet
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 108
Registriert: Sa 10. Apr 2021, 10:56
Wohnort: Berlin

Re: Kontakt-Formular mit CSV-Speicherung

Ungelesener Beitrag von whippet »

Tommy Herrmann hat geschrieben: So 2. Mai 2021, 09:28 ja - ich habe aber die Tage keine Zeit das da mit einzubauen.
Wann hättest du eventuell Zeit dafür? Wie schon mehrmals gesagt, ich werde auch gerne dafür bezahlen.

Gruß Peter
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Kontakt-Formular mit CSV-Speicherung

Ungelesener Beitrag von Tommy Herrmann »

Sorry Peter,

wie gesagt - frage mal unseren Werner, der kennt sich mit PHP aus wie kein anderer.

Mir ist das zu aufwändig mit meinen doch dagegen geringen Kenntnissen. Auch schon deswegen, weil das mit Sicherheit sonst niemand gebrauchen kann.

Es ist eine Kleinigkeit eine Verbindung zum Server herzustellen, entweder über das FTP-Programm (ich mache das sicherlich 10 - 20 Mal am Tag) oder vielleicht erstellst Du auch einen Windows-Ordner als Netzwerk-Ordner - dann hast Du noch schnelleren Zugriff auf diese CSV-Dateien:

https://www.mobirise-tutorials.com/Foru ... 3231#p3231

Gegen Bezahlung mache ich sowieso nichts - aber danke für das Angebot.
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: Kontakt-Formular mit CSV-Speicherung

Ungelesener Beitrag von Werner-Zenk.de »

Mir ist das auch zu aufwändig, warum soll ich da in meiner Freizeit an so einem Script basteln!
Ich erstelle keine Scripte auf Anfrage, habe genug andere Projekte, die meinen Einsatz erfordern.
Antworten

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot] und 26 Gäste