WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 01.06.2019 15:35:23

tomno399
Gast

mpform Eintragungen im Frontend darstellen

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?

Beitrag geändert von tomno399 (01.06.2019 15:44:07)

#2 02.06.2019 17:52:40

berny
Mitglied

Re: mpform Eintragungen im Frontend darstellen

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

#3 02.06.2019 19:04:31

florian
Administrator

Re: mpform Eintragungen im Frontend darstellen

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.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

Liked by:

mrbaseman, berny

#4 03.06.2019 07:33:21

tomno399
Gast

Re: mpform Eintragungen im Frontend darstellen

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?

#5 03.06.2019 07:54:54

florian
Administrator

Re: mpform Eintragungen im Frontend darstellen

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]]


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#6 03.06.2019 08:25:46

tomno399
Gast

Re: mpform Eintragungen im Frontend darstellen

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.

#7 03.06.2019 08:44:32

florian
Administrator

Re: mpform Eintragungen im Frontend darstellen

anbei


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#8 03.06.2019 09:49:48

tomno399
Gast

Re: mpform Eintragungen im Frontend darstellen

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.

#9 03.06.2019 10:08:40

florian
Administrator

Re: mpform Eintragungen im Frontend darstellen

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?


Code allein macht nicht glücklich. Jetzt spenden!

Offline

Liked by:

mrbaseman

#10 03.06.2019 12:19:29

tomno399
Gast

Re: mpform Eintragungen im Frontend darstellen

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.

Liked by:

florian

#11 03.06.2019 12:26:58

mrbaseman
Developer

Re: mpform Eintragungen im Frontend darstellen

tomno399 schrieb:

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

#12 25.06.2019 12:43:10

tomno399
Gast

Re: mpform Eintragungen im Frontend darstellen

@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

#13 25.06.2019 13:03:24

florian
Administrator

Re: mpform Eintragungen im Frontend darstellen

Ä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");

Code allein macht nicht glücklich. Jetzt spenden!

Offline

#14 25.06.2019 13:47:11

tomno399
Gast

Re: mpform Eintragungen im Frontend darstellen

@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

#15 04.07.2019 22:28:26

mrbaseman
Developer

Re: mpform Eintragungen im Frontend darstellen

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

#16 05.07.2019 06:50:44

florian
Administrator

Re: mpform Eintragungen im Frontend darstellen

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.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#17 05.07.2019 08:55:37

mrbaseman
Developer

Re: mpform Eintragungen im Frontend darstellen

florian schrieb:

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

Beitrag geändert von mrbaseman (05.07.2019 09:28:24)

Offline

Liked by:

florian

#18 06.07.2019 06:44:03

tomno399
Gast

Re: mpform Eintragungen im Frontend darstellen

@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.

Beitrag geändert von tomno399 (06.07.2019 06:49:16)

#19 06.07.2019 07:52:28

florian
Administrator

Re: mpform Eintragungen im Frontend darstellen

Zur Uhrzeitangabe im BE: an zwei Stellen richtig, an einer Stelle noch nicht:
attachment.php?item=1791&download=1


Zum Zusatzfeld: geht nur etwas umständlich:
1) Im Formular ein Feld "verborgenes Feld" hinzufügen
attachment.php?item=1792&download=1
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.
attachment.php?item=1793&download=1

Beitrag geändert von florian (06.07.2019 07:55:24)


Code allein macht nicht glücklich. Jetzt spenden!

Offline

Liked by:

mrbaseman

#20 06.07.2019 08:29:41

tomno399
Gast

Re: mpform Eintragungen im Frontend darstellen

Danke Florian! Das mit dem verborgenen Feld war mir nicht (mehr?) bewusst. Spitze Formular-Modul!

Liked by:

florian

#21 06.07.2019 13:35:41

mrbaseman
Developer

Re: mpform Eintragungen im Frontend darstellen

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

#22 06.07.2019 15:29:12

florian
Administrator

Re: mpform Eintragungen im Frontend darstellen

Getestet, funktioniert  thumb_up
(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.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#23 06.07.2019 21:30:43

mrbaseman
Developer

Re: mpform Eintragungen im Frontend darstellen

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.... smile

Offline

#24 14.10.2019 15:47:40

Slugger
Mitglied

Re: mpform Eintragungen im Frontend darstellen

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?

Beitrag geändert von Slugger (14.10.2019 16: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

Offline

#25 14.10.2019 23:20:54

mrbaseman
Developer

Re: mpform Eintragungen im Frontend darstellen

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

Fußzeile des Forums

up