WBCE CMS – Way Better Content Editing.
You are not logged in.
Man kann alle Eintragungen als csv-Datei exportieren. Ich hätte gern ein Droplet(?), um einzelne auswählbare Feld-IDs listenmäßig im Frontend auszugeben. Ist das irgendwie möglich? Ich bin leider kein Programmierer.
Oder kann man die csv-Exportfunktion so gestalten, dass sie mit dem Modul "csv2table" im frontend angezeigt wird?
Last edited by tomno399 (01.06.2019 16:44:07)
du musst das schon genauer definieren, welche Felder usw...
über die csv ist es eher umständlicher als direkt aus der DB zu lesen.
Offline
Anbei ein Droplet.
Wichtig: Es findet keine Fehlerprüfung statt, bei Falscheingaben (ungültige Tabelle, nichtexistentes Feld) verursacht das Droplet eine "weiße Seite" (Server Error).
Aufruf: [[getfielddata?table=X&field=Y&type=Z]]
X: Die Namensendung der Ergebnistabelle, siehe "Allgemeine Optionen" des mpform-Abschnitts
Y: Die ID des auszugebenden Feldes (Zahl), siehe mpform-Feldliste
Z: Art der Ausgabe, vordefiniert: list, table, div, blank
Beispiele:
[[getfielddata?table=105&field=2&type=list]]
[[getfielddata?table=105&field=3&type=table]]
[[getfielddata?table=105&field=4&type=div]]
Wenn du mehrere Felder in Tabellenform brauchst, ginge das grundsätzlich auch, müsste dann aber auf den individuellen Anwendungsfall angepasst werden - also welche IDs, wie viele Felder in einer Zeile usw.
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
mrbaseman, berny
Herzlichen Dank Florian, das Droplet funtioniert. Und du hast mein Problem schon erahnt ...
Ich habe 13 Felder (Vorname, Nachname, Nationalität, Verein, Wertung, Mail, Telefon usw.). Von den 13 Feldern möchte ich 4 oder 5 Felder in einer Liste als Tabellenform ausgeben:
1. | Nachname, Vorname | Verein | Wertung
Das <ul> habe ich in <ol> abgewandelt. Aber die anderen Felder bekomme ich nicht in dieselbe Zeile. Kannst du da nochmal helfen?
Anbei das erweiterte Droplet:
- mehrere Felder ausgeben: Aufruf [[getfielddata?table=105&field=2,3,4&type=table]]
- Listenformate: [[getfielddata?table=105&field=2,3,4&type=olist]] oder [[getfielddata?table=105&field=2,3,4&type=ulist]]
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Danke Florian, das klappt soweit. Nur hätte ich gern in der Tabellenausgabe noch die laufende Nummer implementiert, dann wäre alles optimal.
Denn das Listenformat kann ich nicht "spaltenmäßig" (also mit mehr Abstand zwischen den Feldern in der Zeile) trennen.
anbei
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Danke Florian, die Tabelle klappt wie gewünscht!
Dass die [[getfielddata?table=105&field=2,3,4&type=olist]] und [[getfielddata?table=105&field=2,3,4&type=ulist]] nun auch eine Nummer bekommen, kann man ja notfalls auskommentieren.
Ah, guter HInweis, hatte ich gar nicht bedacht.
Anbei eine optimierte Version.
Die Nummerierung lässt sich jetzt mit dem Parameter num aktivieren.
Default: num=0, also keine Nummerierung; num=1 setzt die fortlaufende Nummer davor.
[[getfielddata?table=105&field=2,3,4&type=table&num=1]]
Bei Tabellen in einer eigenen Zelle, sonst mit Leerschritt getrennt.
Die Reihenfolge ist derzeit so, wie die Einträge im Formular vorgenommen worden sind. Für eine Rangliste ist das also aktuell eher ungeeignet. Da müsste dann noch eine Sortierung nach dem Wert eines bestimmten Feldes (Wertung) stattfinden. Da das nicht ganz trivial Ist, sei mir die Frage gestattet, weshalb Du eine Rangliste mit mpform bauen willst? Warum nicht mit WYSIWYG oder Itemz plus DynamicTable?
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
mrbaseman
Danke Florian, klappt alles! Warum ich das so mache:
Weil mir nichts Besseres einfiel. Bei der Anmeldung mit mpForm geht es um die Reihenfolge der Anmeldungen, weil die Teilnehmerzahl begrenzt ist. Ein Sortieren oder sonstiges wird nicht benötigt. Dann braucht der Admin bis zum Meldeschluss oder Erreichen der Teilnehmergrenze nicht mehr Hand anlegen.
Was mir auffiel: Bei den Eintragungen steht unten rechts im Backend "eingetragen: 10:55, 03.06.2019". Die Uhrzeit hinkt aber genau zwei Stunden hinter der aktuellen Zeit hinterher.
florian
Was mir auffiel: Bei den Eintragungen steht unten rechts im Backend "eingetragen: 10:55, 03.06.2019". Die Uhrzeit hinkt aber genau zwei Stunden hinter der aktuellen Zeit hinterher.
oh, dann fehlt noch irgendwo die Berücksichtigung der Zeitzone. Notier ich mir und das wird in einer der kommenden Versionen korrigiert. Das haben wir an diversen Stellen in den Modulen und im Core... sind wir neulich in einem anderen Zusammenhang auch drüber gestolpert
Offline
@Florian
Das Droplet fügt Neuanmeldungen immer als Nummer 1 ein und verschiebt somit die bereits Angemeldeten auf die nachfolgenden Plätze.
Frage: Kann man mit dem Droplet die Anmeldungen als letzte freie Ziffer "nachfolgend" einfügen?
Danke und Gruß Thomas
Ändere im Droplet die Zeile
$result = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_mpform_results_".$table);
zu
$result = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_mpform_results_".$table." ORDER BY submission_id ASC");
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
@Florian, das klappt. Danke!
@mrbaseman: Das Löschen einer Eintragungs-ID im Backend entfernt die Eintragung im Backend aber leider nicht aus der Datenbank.
Gruß Thomas
Hi Thomas,
mpForm hat zwei verschiedene Arten die gesendeten Daten zu speichern. Eine Tabelle ist die für die Ansicht im Backend. Dort wird das komplette Formular in einen html-formatierten Text gepackt, ähnlich wie es auch per Mail verschickt wird. Aus dieser Tabelle kannst du im Backend auch Zeilen löschen.
Die andere Art ist eher vergleichbar einem Excel-Sheet. Dort sind Tabellen-Spalten (die Felder) und Zeilen (die Einträge) enthalten. Die kannst du aus dem Backen auch als CSV-File exportieren, aber diese Tabelle lässt sich nicht direkt im Backend bearbeiten. Wenn du dort Zeilen rauslöschen möchtest, dann müsstest du das mit dem Adminer tun.
Zu den eingetragenen Zeiten: kannst du bitte mal die angehängte Vorabversion testen?
Offline
Die andere Art ist eher vergleichbar einem Excel-Sheet. Dort sind Tabellen-Spalten (die Felder) und Zeilen (die Einträge) enthalten. Die kannst du aus dem Backend auch als CSV-File exportieren, aber diese Tabelle lässt sich nicht direkt im Backend bearbeiten.
Hm, wäre es sehr aufwändig, das Löschen von Einträgen sowohl in der submissions- als auch in der results-Tabelle zu implementieren (oder gar: dies optional auswählbar bei den Erweiterten Formulareinstellungen zu hinterlegen)? Ich meine, wenn man ein Formular aufsetzt und dann beispielsweise Spam-/Testeinträge löscht, möchte man diese ja eigentlich nicht mit exportieren.
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Hm, wäre es sehr aufwändig, das Löschen von Einträgen sowohl in der submissions- als auch in der results-Tabelle zu implementieren (oder gar: dies optional auswählbar bei den Erweiterten Formulareinstellungen zu hinterlegen)?...
optional auswählbar bei den Erweiterten Formulareinstellungen ist ne gute Idee. Ich muss mal schauen wie aufwändig das ganze ist.
Edit: Typos korrigiert
Last edited by mrbaseman (05.07.2019 10:28:24)
Offline
florian
@mrbaseman
Die Vorabversion werde ich wegen der Zeiten testen, muss aber warten, bis die nächsten Einträge kommen. Denn testen will ich live nicht mehr, weil zu viele Leute dranhängen. Das mit dem Adminer machte ich schon, aber ich will meinen Redakteuren nicht unbedingt dieses gewaltige Tool zumuten bzw. sehr sehr vorsichtig damit sein.
@Florian
Ich benutze die Tabellendarstellung im Droplet. Wie bekomme ich in einer Zeile rechts ein leeres Feld eingebaut, in das ich manuell zum Beispiel ja oder nein eintragen könnte. Oder muss ich ein leeres Feld in mpForm gleich mit anlegen lassen? Aber dann könnten alle Nutzer da was reinschreiben. Hmmm, keine Ahnung.
Last edited by tomno399 (06.07.2019 07:49:16)
Zur Uhrzeitangabe im BE: an zwei Stellen richtig, an einer Stelle noch nicht:
Zum Zusatzfeld: geht nur etwas umständlich:
1) Im Formular ein Feld "verborgenes Feld" hinzufügen
2) Im Dropletaufruf die ID des verborgenen Feldes ergänzen (im Beispiel also 7)
3) die dort anzuzeigenden Angaben via Adminer ergänzen - in der linken Liste aller Tabellen bei Tabelle mod_mpform_results_### auf "Zeigen" klicken, dann einen Doppelklick in die Spalte, die zum ergänzten verborgenen Feld gehört, gewünschten Wert einfach eintippen und unten dann auf "Speichern" klicken.
Last edited by florian (06.07.2019 08:55:24)
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
mrbaseman
Danke Florian! Das mit dem verborgenen Feld war mir nicht (mehr?) bewusst. Spitze Formular-Modul!
florian
Ich muss mich entschuldigen: Das mit dem Löschen von Einträgen war tatsächlich ein Bug. Das Verhalten wie ihr es gewünscht habt, dass man aus dem Backend heraus auch aus der results-Tabelle die entsprechenden Zeilen löschen kann war eigentlich gewünscht und schon implementiert. Man musste den Beitrag anklicken und in der Ansicht, die dann aufgeht (also nicht das Popup wenn man mit dem Mauszeiger drüber geht, sondern das was kommt, wenn man dann wirklich drauf klickt), da gibt es einen Löschen Button, der sowohl aus der Submissions-Tabelle als auch aus der Results-Tabelle die entsprechende Zeile für dieses Submission-ID löscht.
Leider war das auf der Übersichtsseite, auf die man zunächst kommt, nicht so implementiert. Dort ist Ajax aktiv und reagiert wenn man auf das Trash-Symbol klickt. Das entsprechende Skript habe ich in der neuen Version 1.3.32 nun erweitert, so dass auch aus der Übersichtsseite heraus künftig aus beiden Tabellen die entsprechende Zeile für die Submission-ID gelöscht wird.
Die Zeiten sollten jetzt auch überall korrekt sein. Für die Eintragung in der Datenbank wird die DEFAULT_TIMEZONE als Referenz genommen und im Backend wird das dann ggf. nochmal für den angemeldeten Benutzer auf dessen TIMEZONE umgerechnet. Von daher kann es sein dass innerhalb des Eintrags das Kästchen, das schon grün war, in den Fällen nicht stimmt, in denen ein Nutzer angeledet ist, dessen TIMEZONE sich von der DEFAULT_TIMEZONE unterscheidet. Der EIntrag wird nämlich mit der DEFAULT_TIMEZONE zum Zeitpunkt des Submits schon als Text in die Submissions-Tabelle geschrieben. Das bisher rote Kästchen und der EIntrag in der Übersichtsseite sollte aber auch in den etwas exotischeren Fällen jetzt stimmen.
Offline
Getestet, funktioniert
(Wichtig: Browsercache vor dem Testen leeren, sonst wird die vorherige Version von backend.js aus dem Cache geladen und das Ajax-Löschen klappt nicht)
Die Uhrzeiten stimmen jetzt auch überall.
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Huch, an der backend.js hab ich dieses mal glaube ich gar nix geändert. Es war das serverseitige Interface in der ajax.php.
Aber ich hatte beim Testen auch so Effekte, dass ich mehrfach die Backend Seite neu laden musste bis meine Änderungen aktiv wurden.
Ajax will wohl beim Update ein bisschen getätschelt werden....
Offline
Vielen Dank für das Droplet.
Hätte ich aber noch ein paar Fragen.
Was muss ich tun damit auch das Datum und die Uhrzeit als Eingetragen steht?
Ich möchte gerne eine Auflistung die entweder die letzten 30 Tage anzeigt oder wenn in den letzten 30 Tage keine Eintragungen vorhanden sind die letzten 5 anzeigen.
Und ist es Möglich die Feldnamen "FETT" in der obersten Tabellenzeile anzuzeigen?
Last edited by Slugger (14.10.2019 17:07:36)
Hoster: ALL-INKL *** Grundsätzliche WBCE Konfig ***
WBCE: 1.5.4 • BE: 2.1.0 • PHP: 8.1.16 * 1. Projekt: FE: Simple responsive • BE: Argos * 2. Projekt: FE: hortal • BE: Argos * 3. Projekt: FE: WBCEZon • BE: Argos * 4. Projekt: FE: WBCETik • BE: Argos
Status Projekt 1-4: OK
Online
die Spalte "submitted_when" enthält den Zeitpunkt, zu dem das Formular abgeschickt worden ist. Das Droplet verwendet aktuell jedoch nur die Spalten, die mit 'field' beginnen.
date(TIME_FORMAT.', '.DATE_FORMAT, $r["submitted_when"] - DEFAULT_TIMEZONE+TIMEZONE)
würde die entsprechende Ausgabe unter Berücksichtigung der eingestellten Zeitzone ergeben. jetzt muss man nur überlegen, wie man das ins Droplet mit einbaut, damit die Ausgabe beim Aufruf mit getriggert werden kann.
Die Ausgabe der Feldnamen ist aufwändiger. Da muss man die fileds-Tabelle dazu befragen. in export_submissions.php ist der dazu nötige Code im Prinzip drin. Über die Feldnamen muss man dann eben in einer Schleife drüber gehen oder man macht ein geschicktes implode() was die zum Rest der Droplet-Ausgabe passenden $elementDivider mit dazwischen packt.
Die Einschränkung auf die letzten 30 Tage oder an sonsten die letzten 5 könnte man im SQL Statement mit WHERE submission_time > ... und LIMIT erschlagen, wobei es wahrscheinlich einfacher ist, die Verknüpfung "wenn keine gefunden wurden, dann die letzten 5" in php zu notieren. Wenn nämlich numRows() == 0 dann suche nochmal aber ohne Einschränkung der Zeit sondern auf der Anzahl
Offline