NAVIGATION
This shows you the differences between two versions of the page.
|
deutsch:andere-erweiterungen:hacks:formularergebnis-download-csv [2012/05/17 15:39] Knut Heermann (flip-flop) |
deutsch:andere-erweiterungen:hacks:formularergebnis-download-csv [2018/06/03 18:09] (current) |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| {{indexmenu_n>100}} | {{indexmenu_n>100}} | ||
| - | ====== Formularbenutzerdaten als CSV-Datei ====== | + | ====== Formularergebnis als CSV-Datei ====== |
| - | Mit diesem Hack kann die Auswertung der Formulareingaben die im BE beim CP Formular unter dem ##Download-Button## sichtbar wird als CSV-Datei abgespeichert werden. | + | Mit diesem Hack kann die Auswertung der Formulareingaben die im BE beim CP Formular unter dem ##Download-Button## sichtbar wird als CSV-Datei abgespeichert werden. \\ //([[http://de.wikipedia.org/wiki/CSV_(Dateiformat)]])// |
| Die hier vorgestellt Lösung fügt einen CSV Download-Link in die aufgerufene Download-Ausgabe unten an. \\ | Die hier vorgestellt Lösung fügt einen CSV Download-Link in die aufgerufene Download-Ausgabe unten an. \\ | ||
| Line 41: | Line 41: | ||
| **Autor:** K.Heermann (flip-flop) http://planmatrix.de \\ //(17.05.2012)// | **Autor:** K.Heermann (flip-flop) http://planmatrix.de \\ //(17.05.2012)// | ||
| **CMS Version:** >= 1.4 \\ | **CMS Version:** >= 1.4 \\ | ||
| - | **Version:** V1.0 \\ | + | **Version:** V1.0 17.05.2012 \\ |
| + | **Update V1.1 18.05.2012:** Standardkonforme CSV-Ausgabe auch bei " und/oder einem Feldtrenner im Zellentext, \\ | ||
| + | siehe [[http://forum.phpwcms.org/viewtopic.php?p=135720#p135720]]. | ||
| - | + | **Dateiname:** include/inc_act/act_export.php | |
| - | **Dateiname:** | + | |
| - | * include/inc_act/act_export.php | + | |
| Line 54: | Line 54: | ||
| - | ==== Codeschnipsel (Hack) ==== | + | ==== Codeschnipsel V1.1 (Hack) ==== |
| + | |||
| + | **Update V1.1 18.05.2012:** Standardkonforme CSV-Ausgabe auch bei " und/oder einem Feldtrenner im Zellentext, \\ | ||
| + | siehe [[http://forum.phpwcms.org/viewtopic.php?p=135720#p135720]]. | ||
| + | |||
| + | Als Feldtrenner wird hier ein ##**;**## verwendet, einstellbar in der Variablen **$separator**, etwa in Zeile 140. | ||
| Erweiterung der Datei **include/inc_act/act_export.php** etwa ab Zeile 120. \\ | Erweiterung der Datei **include/inc_act/act_export.php** etwa ab Zeile 120. \\ | ||
| Line 82: | Line 87: | ||
| if(!$data) die('Just a problem!'); | if(!$data) die('Just a problem!'); | ||
| - | $separator =';'; // CSV-separator | + | $separator =';'; // CSV-Feldseparator |
| $export = array(); | $export = array(); | ||
| $row = 1; | $row = 1; | ||
| - | $export[0] = array('#ID'=>'','#Date'=>'','#IP'=>''); | + | $export[0] = array('#'=>'','#ID'=>'','#Date'=>'','#IP'=>''); |
| // run all data first and combine array elements | // run all data first and combine array elements | ||
| Line 91: | Line 96: | ||
| // numbering starting at 1 | // numbering starting at 1 | ||
| + | $export[$row]['#'] = $row; | ||
| $export[$row]['#ID'] = $value['formresult_id']; | $export[$row]['#ID'] = $value['formresult_id']; | ||
| $export[$row]['#Date'] = $value['formresult_createdate']; | $export[$row]['#Date'] = $value['formresult_createdate']; | ||
| Line 136: | Line 142: | ||
| $elements[$x] .= ''; | $elements[$x] .= ''; | ||
| - | if ( isset($export[$x][$key]) ) { | + | // if ( isset($export[$x][$key]) ) { |
| // // Nicht zwingen notwenig, nur um fuer HTML-Darstellung | // // Nicht zwingen notwenig, nur um fuer HTML-Darstellung | ||
| // $export[$x][$key] = html_specialchars($export[$x][$key]); | // $export[$x][$key] = html_specialchars($export[$x][$key]); | ||
| - | // CR oder LF in String enthalten? -> wenn ja den Teilbereich in "..." setzen | + | // Jede Spalte wird standardkonform in "..." gesetzt (OG: 18.05.2012) |
| - | if (strpos($export[$x][$key], chr(13)) !== false OR strpos($export[$x][$key], chr(10)) !== false) { | + | $export[$x][$key] = str_replace(chr(13),'', $export[$x][$key]); // CR loeschen wenn vorhanden (LF bleibt bestehen wenn vorhanden) |
| - | $export[$x][$key] = '"'.$export[$x][$key].'"'; | + | $export[$x][$key] = '"'.str_replace('"', '""', $export[$x][$key]).'"'; // Jede Spalte in "..." setzen |
| - | $export[$x][$key] = str_replace(chr(13),'', $export[$x][$key]); // CR loeschen wenn vorhanden (LF bleibt bestehen) | + | |
| - | } | + | |
| - | + | ||
| - | $elements[$x] .= $export[$x][$key]; | + | |
| - | + | ||
| - | } | + | |
| + | // } | ||
| + | $elements[$x] .= $export[$x][$key]; | ||
| $elements[$x] .= $separator; // CSV-Trenner setzen | $elements[$x] .= $separator; // CSV-Trenner setzen | ||
| Line 170: | Line 172: | ||
| \\ | \\ | ||
| - | Ich rate dazu die Originaldatei vor dem Hack umzubenennen nach z.B. **act_export_org.php** und die gepatchte Datei nochmals abzulegen unter z.B. **act_export_patch.php**. | + | Es ist ratsam die Originaldatei vor dem Hack umzubenennen nach z.B. **act_export_org.php** und die gepatchte Datei nochmals abzulegen unter z.B. **act_export_patch.php**. |
| - | Das ist hilfreich bei einem Update des Systems, bei dem die eigentliche Datei **act_export.php** u.U. überschrieben wird. | + | Das ist hilfreich bei einem Update des Systems, bei dem die jetzt gepatchte Datei **act_export.php** u.U. überschrieben wird. |
| So kann nach einem Update leicht dieser Hack wieder eingesetzt werden. | So kann nach einem Update leicht dieser Hack wieder eingesetzt werden. | ||