Seite 1 von 1

Formular, das in csv-Datei schreibt

Verfasst: Di 6. Aug 2019, 14:06
von christobal
Hallo aus dem Regenland Tirol,

Ich hab ein webEdition Formular type="formmail", bei dem sich Mitglieder zu Tagungen anmelden können. Der Wunsch des Kunden ist, dass das Formular an eine bestimmte Mailadresse, ein Bestätigungsmail an den Absender gesandt wird und die Daten zusätzlich in eine csv-Datei geschrieben werden.

Ich hab in meinen Unterlagen noch ein process.tmpl gefunden inkl. einem read.tmpl, aber ich weiß nicht wie da das Procedere aussieht! Kann mir da bitte wer helfen? Wäre sehr dankbar!

Christoph

process.tmpl

Code: Alles auswählen

<?php 

// Daten aus Formular uebernehmen 
$Vorname = $_POST['Vorname']; 
$Nachname = $_POST['Nachname']; 

// Pruefen ob Datei existiert 
if (file_exists("datei.csv")){ 
$data = $Vorname.";".$Nachname."n"; 
}else{ 
$data = ";".$Vorname.";".$Nachname."n"; 
} 

//datei oeffnen (a+) am Ende der Datei Inhalt hinzufügen 
$fp=fopen("datei.csv","a+") or die("Datei konnte nicht geoeffnet werden"); 

//schreibt ein csv file 
fwrite($fp, $data); 

// Datei schliessen 
fclose($fp); 

echo("Daten in csv Datei geschrieben"); 

?> 
<a href="read.php">Datei auslesen</a> 
read.tmpl

Code: Alles auswählen

<we:ifNotEditmode>

<?php 
// HTML Dokument aufbauen 
echo "<html><head><base href="/"><title>Lesen</title></head><body bgcolor=silver>"; 

// Tabellenformatierung 
echo "<table border=0 bordercolor=black cellspacing=0 cellpadding=5 width=100% style='font-size:12pt'>"; 

// Tabelleninhalt 
echo readAndParseCSVFile("datei.csv"); 

// Tabelle abschliessen 
echo "</table></body></html>"; 


function readAndParseCSVFile($filename) { 
// Dati oeffnen 
$fp = fopen($filename,"r") or die("Datei konnte nicht geoeffnet werden"); 

// Datei auslesen 
$file = fread($fp,65535); 

// Ersetzen der Trennzeichen durch HTML Tabellen-Tags 
$replaced = eregi_replace(";", "<td>", $file); 
$replaced2 = eregi_replace("n", "<tr><td>", $replaced); 
$replaced3 = eregi_replace("r", "<tr><td>", $replaced2); 

// Datei schliessen 
fclose($fp); 

// Rueckgabe des fertigen Tabelleninhalts 
return $replaced3; 
} 

?>

</we:ifNotEditmode>

Re: Formular, das in csv-Datei schreibt

Verfasst: Mo 12. Aug 2019, 10:43
von christobal
Grüß Euch aus Tirol!

Kann mir da bitte wer helfen? Wo binde ich das process.tmpl ein? Logisch wäre das beim Feedbackformular onsuccess---! Aber wie?

Wäre um Tipps sehr dankbar!

Re: Formular, das in csv-Datei schreibt

Verfasst: Mo 12. Aug 2019, 13:11
von blickfang
Hi christoph,
das ist eher ein ephp Aufgabenstellung als es ein webEdition Thema wäre, vielleicht antwortet deshalb noch keiner ;-)
VG, Timo

Re: Formular, das in csv-Datei schreibt

Verfasst: Mo 12. Aug 2019, 14:26
von christobal
Ah, ok, danke!!

Re: Formular, das in csv-Datei schreibt

Verfasst: Di 13. Aug 2019, 12:30
von helas
Hallo Christoph, schreibe die Mails bzw. Formular-Angaben doch einfach zusätzlich in Objekte.
Dann kannst du/dein Kunde diese als CSV auch aus webEdition exportieren.

Mit ein paar "Handgriffen" ist das schnell erstellt. Haben wir an unterschiedlichsten Stellen schon gemacht.

Vielleicht noch ein Hinweis: der Nutzer sollte über die Datenspeicherung vorab informiert werden. Stichwort DSGVO :)

Beste Grüße, Lars

Re: Formular, das in csv-Datei schreibt

Verfasst: Di 13. Aug 2019, 14:16
von christobal
Grüß Dich Lars!

Danke für den Hinweis! Kannst Du mir bitte einen Tipp geben, wie ich

Code: Alles auswählen

<we:form type="formmail" name="Kontaktformular" ... >
mit

Code: Alles auswählen

<we:write type="object" formname="Kontaktformular" publish="true" classid="19" onduplicate="overwrite" onpredefinedname="overwrite" forceedit="true" searchable="true" />
zusammenbringen kann?

Christoph

Re: Formular, das in csv-Datei schreibt

Verfasst: Do 15. Aug 2019, 09:52
von haydi
Hallo Christoph,

hier ein schnipselchen wie es mit php geht...

Code: Alles auswählen

// neuer wert in DB abspeichern
$obj = new we_objectFile(); // klasse initialisieren
//$obj->initByID(123); --- wenn ein vorhandenes objekt überschrieben werden soll ;-)
$obj->we_new(); // wir legen aber ein ein neues an
$obj->TableID = 1; // id der klasse
$obj->setRootDirID(true);
$obj->resetParentID();
$obj->restoreDefaults();
$obj->Text = 'meinobjektname'; // objektname
$obj->Path = $obj->getParentPath().(($obj->getParentPath() != "/") ? "/" : "").$obj->Text;
$obj->setElement('meinfeld', 'meinvalue'); // dies hier so oft wiederholen und mit den werten der klasse mit seinen einträgen wiederholen wie man eben felder hat
//$obj->we_save(); -- ueberfluessig :-)
if (!$obj->we_publish()) {
 // schreiben war nicht erfolgreich
}
ciao
haydi

Re: Formular, das in csv-Datei schreibt

Verfasst: Do 15. Aug 2019, 23:45
von mokraemer
ohne es ausprobiert zu haben, ist doch evtl. die Variante die Daten erst in ein Objekt zu schreiben und dann mit den gespeicherten Daten eine Mail zu verschicken die einfachere Variante.
Man müßte das doch dann einfach mittels we:sendMail machen können - oder irre ich?

Re: Formular, das in csv-Datei schreibt

Verfasst: Fr 16. Aug 2019, 14:25
von helas
...richtig. Auf der Zielseite erst we:sendmail... und dann

Code: Alles auswählen

<we:write type="object" formname="anmeldung" publish="true" classid="1" onduplicate="increment" onpredefinedname="appendto" />
Also, alles easy mit webEdition. :D

Re: Formular, das in csv-Datei schreibt

Verfasst: Di 20. Aug 2019, 09:46
von christobal
Hallo und vielen Dank für Eure Hilfe, bin schon weiter, Mail und Bestätigungsmail werden versandt, Objekte werden zwar angelegt aber nicht mit Inhalt befüllt?!

Hab es jetzt so gelöst, aber vermutl. noch einen Denkfehler eingebaut:

Code: Alles auswählen

<we:form type="object" name="anmeldung" classid="33"id="self">
<input type="text" id="Vorname" name="Vorname">
<input type="text" id="Nachname" name="Nachname">
<input type="email" id="email" name="email">
<button type="reset">verwerfen</button> 
<button type="submit">absenden</button>
<input type="hidden" name="sent" value="1" />
</we:form>

<we:ifVar name="sent" match="1" type="request">

<we:var type="request" name="email" to="global" nameto="recipientccmail"/>

<we:sendMail id="5011" subject="Bewerbung" recipient="admin@bigdetail.com" from="admin@bigdetail.com" mimetype="text/html" includeimages="false" useformmailLog="true" useformmailBlock="true" />

<we:sendMail id="5010" subject="Bestätigung für Bewerbung" recipient="\$recipientccmail" from="admin@bigdetail.com" mimetype="text/html" includeimages="false" useformmailLog="true" useformmailBlock="true" />

<we:write type="object" formname="anmeldung" publish="true" searchable="true" classid="33" onduplicate="increment" onpredefinedname="appendto" />

</we:ifVar>
Version: 8.0.6
und <we:sessionStart /> steht am Anfang...

Hat vielleicht wer noch eine Idee?
Christoph

Re: Formular, das in csv-Datei schreibt

Verfasst: Di 20. Aug 2019, 13:44
von mediavantis
Hallo Christobal,

so wird das wahrscheinlich nichts... Die Felder im Objekt werden in Deinem Formular gar nicht angesprochen.
Entweder, du schreibst die Einträge Deiner <inputs> in Variablen um diese per php in das Objekt zu schreiben, oder Du verwendest

statt
<input type="text" id="Vorname" name="Vorname">

besser
<we:userInput type="textinput" name="Vorname" />

Natürlich musst Du dann Deine Variablen in der Email, die Du dann per sendmail versendest, aus dem angelegten Objekt ziehen, sofern Du diese per Email noch an den User bestätigen möchtest.

Code: Alles auswählen

<we:ifNotVarEmpty match="Absenden" type="post">
<we:write type="object" formname="anmeldung" publish="false" classid="33" charset="UTF-8" />
</we:ifNotVarEmpty>

<we:ifWritten type="object" formname="anmeldung">

<we:sendMail id="5011" subject="Bewerbung" recipient="admin@bigdetail.com" from="admin@bigdetail.com" mimetype="text/html" includeimages="false" useformmailLog="true" useformmailBlock="true" />
<we:sendMail id="5010" subject="Bestätigung für Bewerbung" recipient="\$recipientccmail" from="admin@bigdetail.com" mimetype="text/html" includeimages="false" useformmailLog="true" useformmailBlock="true" />
            
<we:else />
<?php $action=($_SERVER['REQUEST_URI'])."#succes"; ?>
<we:form type="object" action="\$action" name="anmeldung" classid="33" method="post">
            
<we:userInput type="textinput" name="Vorname"  />
<we:userInput type="textinput" name="Name"  />
......
<button type="submit">absenden</button>          
</we:form>
</we:ifWritten>  

Re: Formular, das in csv-Datei schreibt

Verfasst: Di 20. Aug 2019, 15:19
von christobal
Danke vielmals Ulrich,

hab ich jetzt auf <we:userinput...> geändert und jetzt legt er brav Objekte an.

Kannst Du mir bitte helfen, wie ich aus dem frischen Objekt die Felder in Variablen umwandeln und dann per sendmail als email verschicken kann?

Wer nichts weiß muss alles glauben!
Christoph

Re: Formular, das in csv-Datei schreibt

Verfasst: Di 20. Aug 2019, 15:34
von mediavantis
z. B. mit <we:var type="request" name="we_ui_anmeldung[Name]" /> in Deinem Email-Template

in diesem Fall beziehst Du die Daten direkt aus dem Formular