{"id":262,"date":"2017-03-01T12:24:37","date_gmt":"2017-03-01T11:24:37","guid":{"rendered":"http:\/\/evileu.de\/zum-schwarzen-pinguin\/?p=262"},"modified":"2017-03-01T12:42:09","modified_gmt":"2017-03-01T11:42:09","slug":"warum-einfach-wenns-auch-umstaendlich-geht-zwei-db-plugins-fuer-contact-form-7","status":"publish","type":"post","link":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/2017\/03\/01\/warum-einfach-wenns-auch-umstaendlich-geht-zwei-db-plugins-fuer-contact-form-7\/","title":{"rendered":"Warum einfach, wenn&#8217;s auch umst\u00e4ndlich geht? Zwei DB-Plugins f\u00fcr Contact Form 7"},"content":{"rendered":"<h2>\u00dcber Contact Form 7 und die Limits<\/h2>\n<p>Contact Form 7 ist mit Recht eines der beliebtesten Formular-Plugins f\u00fcrWordpress. Es ist einfach zu konfigurieren, in der Funktionalit\u00e4t f\u00fcr den Anwender leicht verst\u00e4ndlich, und macht genau das was es soll, n\u00e4mlich abgeschickte Kontaktformulare als E-Mails versenden und, wenn man es m\u00f6chte, auch eine automatisierte Antwort hinausschicken.<\/p>\n<p>Wenn man jetzt aber feststellt, da\u00df einem die E-Mail-Flut zuviel wird und man mit dem Verwalten der vielen Kontaktanfragen gar nicht mehr nachkommt, mu\u00df eine geschicktere L\u00f6sung her. F\u00fcr viele Anwender ist es auch ein Thema, da\u00df E-Mail-Kontaktanfragen im Spam-Ordner landen oder sonstwie verlorengehen. Abhilfe schaffen da Plugins, die die eingehenden Kontaktformulare in Datenbanktabellen speichern. Da geht nix verloren, da hat man gleich einen sch\u00f6nen \u00dcberblick, das l\u00e4\u00dft sich auch automatisiert weiterverarbeiten. Feine Sache, und auch aus DV-technischer Sicht eine saubere L\u00f6sung. Ich habe mal zwei Plugins unter die Lupe genommen, die diesen Job auf h\u00f6chst unterschiedliche Art und Weise erledigen.<\/p>\n<h2>Contact Form to DB von BestWebSoft<\/h2>\n<p>Mit 3000+ Installationen das etwas verbreitetere Plugin, deswegen schauen wir es uns zuerst an. Es kommt mit einem recht \u00fcbersichtlichen Admin Panel daher, in dem man anw\u00e4hlt, welches Formular man anschauen m\u00f6chte, das wird dann tabellarisch dargestellt, ist nach allen Feldern sortierbar, und man kann verschiedenste Export-Optionen w\u00e4hlen:<\/p>\n<div id=\"attachment_266\" style=\"width: 362px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-266\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-266\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2017\/03\/cf7db_exportformate.jpg\" alt=\"cf7db_exportformate\" width=\"352\" height=\"286\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2017\/03\/cf7db_exportformate.jpg 352w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2017\/03\/cf7db_exportformate-300x244.jpg 300w\" sizes=\"(max-width: 352px) 100vw, 352px\" \/><p id=\"caption-attachment-266\" class=\"wp-caption-text\">cf7db_exportformate<\/p><\/div>\n<h3>Soweit, so gut, aber was passiert darunter in der Datenbank?<\/h3>\n<p>Man findet die Daten der abgeschickten Formulare alle in einer Tabelle wieder &#8211; ja, alle in eine einzige Tabelle gepfercht, und zwar nach dieser interessanten Logik:<\/p>\n<div id=\"attachment_269\" style=\"width: 504px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-269\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-269\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2017\/03\/cf7db_submits_tabelle-1.jpg\" alt=\"cf7db_submits_tabelle\" width=\"494\" height=\"391\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2017\/03\/cf7db_submits_tabelle-1.jpg 494w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2017\/03\/cf7db_submits_tabelle-1-300x237.jpg 300w\" sizes=\"(max-width: 494px) 100vw, 494px\" \/><p id=\"caption-attachment-269\" class=\"wp-caption-text\">cf7db_submits_tabelle<\/p><\/div>\n<p>F\u00fcr jedes Feld aus einem abgeschickten Formular wird augenscheinlich ein eigener Datensatz angelegt. Die haben logo alle die selbe submit_time, daran erkennt das Plugin anscheinend, welche Daten zu einem einzelnen abgeschickten Formular zusammengeh\u00f6ren. Dann wird in jedem Datensatz festgehalten, zu welchem Formular er geh\u00f6rt, hier ist es mein &#8222;Modelformular&#8220;. Die Felder field_name und field_value sind eigentlich selbsterkl\u00e4rend, Feldname und Wert eben. Die field_order scheint einfach die Reihenfolge der Felder im Formular zu sein. Interessant ist dann noch das Feld file, das ist ein Longblob und kann Attachments speichern.<\/p>\n<h3>Das ist keine relationale Logik<\/h3>\n<p>Also, mit relationaler Datenbanklogik hat das aber schon rein gar nichts mehr zu tun! Wie soll man denn bitte so eine Tabelle in MySQL weiterverarbeiten? Der ganze Rattenschwanz steht ja zu jedem abgeschickten Formular wieder in ganzer Pracht in der Tabelle, f\u00fcr jedes Formularfeld ein eigener Datensatz &#8211; wie, bittesehr, soll man da zum Beispiel einen Select drauf absetzen? Erstmal nach form_name selektieren, dann nach dem Timestamp gruppieren, dann noch die Feldreihenfolge (field_order) ber\u00fccksichtigen, und dann.. ja was denn nicht noch alles? Mal ganz davom abgesehen, da\u00df die Tabelle vor Redundanzen geradezu trieft, der Formularname und die Feldnamen werden x-mal gespeichert.<\/p>\n<h3>Daumen nach unten<\/h3>\n<p>Wenn Contact Form to DB wenigstens einen Export nach MySQL anbieten w\u00fcrde, w\u00e4re das deutlich einfacher, aber der fehlt kurioserweise. Also erstmal nach Excel exportieren, dann mit dem phpmyadmin wieder in MySQL reinimportieren, und dann erst weiterverarbeiten, oder wie? Das finde ich doch schwer umst\u00e4ndlich, deswegen: Daumen nach unten f\u00fcr dieses Plugin, weil es v\u00f6llig ignoriert, da\u00df man die Formulardaten bittesch\u00f6n gern mal in MySQL weiterverarbeiten m\u00f6chte.<\/p>\n<h2>Save Contact Form 7 von Nimblechapps Ltd.<\/h2>\n<p>Auch dieses Plugin kommt mit einem recht aufger\u00e4umten Admin-Panel. Die Export-Optionen beschr\u00e4nken sich zwar auf CSV, PDF und Print, aber das macht nichts, denn drunter auf der Datenbank sieht es h\u00fcbsch \u00fcbersichtlich aus. F\u00fcr jedes Formular wird eine eigene Tabelle angelegt, diese werden durchnummeriert (z. B. Savecontactform7_1). Man erkennt aber sofort die Feldnamen aus den Formularen in den Datenbanktabellen wieder, die werden n\u00e4mlich 1:1 \u00fcbernommen<\/p>\n<h3>Tabellenstruktur Beispiel<\/h3>\n<div id=\"attachment_274\" style=\"width: 489px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-274\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-274\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2017\/03\/savecf7_tabelle-1.jpg\" alt=\"savecf7_tabelle\" width=\"479\" height=\"174\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2017\/03\/savecf7_tabelle-1.jpg 479w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2017\/03\/savecf7_tabelle-1-300x109.jpg 300w\" sizes=\"(max-width: 479px) 100vw, 479px\" \/><p id=\"caption-attachment-274\" class=\"wp-caption-text\">savecf7_tabelle<\/p><\/div>\n<p>Vorne kommt zuerst eine AutoIncrement-ID, das ist schon mal sehr praktisch. Es folgt der Timestamp, dann die Formularfelder mit den entsprechenden Inhalten. Jedes abgeschickte Formular ein Datensatz, Jedes Kontaktformular eine eigene Tabelle und basta.. Na, da kann man doch sauber damit arbeiten!<\/p>\n<p>Einziger Wermutstropfen: es k\u00f6nnen keine Attachments gespeichert werden. Aber mal ehrlich, wie oft brauchen sie Dateianh\u00e4nge in Kontaktformularen? (In der von Contact Form 7 generierten E-Mail sind die Attachments nat\u00fcrlich drin)<\/p>\n<h3>Daumen hoch<\/h3>\n<p>&#8230; f\u00fcr dieses blitzsauber arbeitende Plugin. Ich w\u00fcrde mir h\u00f6chstens noch w\u00fcnschen, da\u00df aus dem Tabellennamen der Formularname ersichtlich ist, also die Tabelle statt <em>savecontactform7_xy<\/em> vielleicht <em>scf7_bestellformular <\/em>hei\u00dfen w\u00fcrde, aber das ist Kleinkram. Ich verwende das Plugin gerne, und empfehle es auch meinen Kunden als sch\u00f6n saubere L\u00f6sung.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00dcber Contact Form 7 und die Limits Contact Form 7 ist mit Recht eines der beliebtesten Formular-Plugins f\u00fcrWordpress. Es ist einfach zu konfigurieren, in der Funktionalit\u00e4t f\u00fcr den Anwender leicht verst\u00e4ndlich, und macht genau das was es soll, n\u00e4mlich abgeschickte Kontaktformulare als E-Mails versenden und, wenn man es m\u00f6chte, auch eine automatisierte Antwort hinausschicken. Wenn [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1,7,8,2],"tags":[17],"_links":{"self":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/262"}],"collection":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/comments?post=262"}],"version-history":[{"count":6,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/262\/revisions"}],"predecessor-version":[{"id":277,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/262\/revisions\/277"}],"wp:attachment":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/media?parent=262"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/categories?post=262"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/tags?post=262"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}