- Posts: 9
- Thank you received: 0
Welcome to the LimeSurvey Community Forum
Ask the community, share ideas, and connect with other LimeSurvey users!
Ausgabe Antworten aus MultiSelect & Matrix
- Marurllan_192739
-
Topic Author
- Offline
- Banned
-
Less
More
1 year 6 months ago - 1 year 6 months ago #219818
by Marurllan_192739
Ausgabe Antworten aus MultiSelect & Matrix was created by Marurllan_192739
LimeSurvey Cloud 3.27.16
Hallo Zusammen,
Ich würde gerne bei meiner Umfrage bestimmte Fragen mit Antworten in meine End-URL integrieren. Aktuell schaffe ich es mit implode() und auch über list(). Mein Code sieht gerade so aus:
Q2 is die Frage, SQ001 etc. sind die Teilfragen. Gibt es eine Möglichkeit den Code zu verkürzen um nicht jede Teilfrage in den Code schreiben zu müssen? Die Frage bezieht sich auf Multiselect und auch auf Matrixen.
Vielen Dank für Eure Unterstützung.
Hallo Zusammen,
Ich würde gerne bei meiner Umfrage bestimmte Fragen mit Antworten in meine End-URL integrieren. Aktuell schaffe ich es mit implode() und auch über list(). Mein Code sieht gerade so aus:
Code:
www.url.de?{list(Q2_SQ001.shown,Q2_SQ002.shown,Q2_SQ003.shown,Q2_SQ004.shown)}
Q2 is die Frage, SQ001 etc. sind die Teilfragen. Gibt es eine Möglichkeit den Code zu verkürzen um nicht jede Teilfrage in den Code schreiben zu müssen? Die Frage bezieht sich auf Multiselect und auch auf Matrixen.
Vielen Dank für Eure Unterstützung.
Last edit: 1 year 6 months ago by Marurllan_192739.
The topic has been locked.
1 year 6 months ago #219820
by Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Replied by Joffm on topic Ausgabe Antworten aus MultiSelect & Matrix
[url]
manual.limesurvey.org/ExpressionScript_-....22that.22_variables
[/url]
Dein Beispiel würde also zu
list(that.Q2.shown)}
Joffm
Dein Beispiel würde also zu
list(that.Q2.shown)}
Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: Marurllan_192739
The topic has been locked.
- Marurllan_192739
-
Topic Author
- Offline
- Banned
-
Less
More
- Posts: 9
- Thank you received: 0
1 year 6 months ago #219822
by Marurllan_192739
Replied by Marurllan_192739 on topic Ausgabe Antworten aus MultiSelect & Matrix
Vielen Dank!
Funktioniert super! Ich habe dann noch weiter gemacht und die Funktion listifop gefunden. Diese wurde von dir auch schon super im Forum erklärt. Ich habe jetzt einige question prperty (retProp) ausprobiert. Am liebsten hätte ich ein String mit nur SQ002&SQ003&... Gibt es da ein Command für nur die SubQuestion? Ansonsten muss ich es wohl mal mit regexMatch versuchen.
Aktuelle Ausgabe:
www.url.de?frage1=194269X86X955SQ002&194269X86X955SQ003
Bis dahin super vielen Dank
Funktioniert super! Ich habe dann noch weiter gemacht und die Funktion listifop gefunden. Diese wurde von dir auch schon super im Forum erklärt. Ich habe jetzt einige question prperty (retProp) ausprobiert. Am liebsten hätte ich ein String mit nur SQ002&SQ003&... Gibt es da ein Command für nur die SubQuestion? Ansonsten muss ich es wohl mal mit regexMatch versuchen.
Aktuelle Ausgabe:
www.url.de?frage1=194269X86X955SQ002&194269X86X955SQ003
Bis dahin super vielen Dank

The topic has been locked.
1 year 6 months ago #219825
by Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Replied by Joffm on topic Ausgabe Antworten aus MultiSelect & Matrix
Sorry, aber jetzt hast Du mich etwas verwirrt.
Was willst Du eigentlich übergeben?
Jetzt sieht es so aus, als wollest Du keine Ergebnisse übergeben, sondern die SGQA Codes.
Also etwas wie {list(that.Q2.sgqa)},
vielleicht verziert mit etwas Stringfunktion
{str_replace(", ","&",list(that.Q2.sgqa))}
Gibt bei mir z.B.
188316X3414X43379SQ001&188316X3414X43379SQ002&188316X3414X43379SQ003&188316X3414X43379SQ004&188316X3414X43379SQ005&188316X3414X43379SQ006&188316X3414X43379SQ007&188316X3414X43379SQ008&188316X3414X43379SQ009&188316X3414X43379SQ010
Ansonsten solltest Du einmal ein Beispiel als lss Export schicken mit Erklärung, was wann, warum und wie übergeben werden soll.
Joffm
Was willst Du eigentlich übergeben?
Jetzt sieht es so aus, als wollest Du keine Ergebnisse übergeben, sondern die SGQA Codes.
Also etwas wie {list(that.Q2.sgqa)},
vielleicht verziert mit etwas Stringfunktion
{str_replace(", ","&",list(that.Q2.sgqa))}
Gibt bei mir z.B.
188316X3414X43379SQ001&188316X3414X43379SQ002&188316X3414X43379SQ003&188316X3414X43379SQ004&188316X3414X43379SQ005&188316X3414X43379SQ006&188316X3414X43379SQ007&188316X3414X43379SQ008&188316X3414X43379SQ009&188316X3414X43379SQ010
Ansonsten solltest Du einmal ein Beispiel als lss Export schicken mit Erklärung, was wann, warum und wie übergeben werden soll.
Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: Marurllan_192739
The topic has been locked.
- Marurllan_192739
-
Topic Author
- Offline
- Banned
-
Less
More
- Posts: 9
- Thank you received: 0
1 year 6 months ago #219848
by Marurllan_192739
Replied by Marurllan_192739 on topic Ausgabe Antworten aus MultiSelect & Matrix
Ok, verwirren wollte ich niemanden.
Das große Ziel ist, die End-URL mit Antworten aus der Umfrage zu bestücken, sodass auf der Landingpage für den Teilnehmer eine kleine kurze Auswertung stattfinden kann. Dies geht über die URL-Parameter. Top!
Mein Ziel ist es, die URL-Parameter so kurz wie möglich zu halten. Deswegen eignen sich die Variable-Attributes .shown / .question nicht, da die Teilfragen ab und an recht lang sind.
Darum bin ich auf die SGQA Codes gekommen. Wenn ich {list(that.Q2.sgqa)} benutze, werden mir alle SGQA Codes der Frage ausgegeben, auch die, die nicht ausgewählt wurden. Mit {listifop("code", "==","Y","sgqa","&", that.Q2.sgqa)} bekomme ich jetzt nur die SGQA Codes, die in der Frage auch angeklickt wurden. Passt!
Am liebsten hätte ich eine noch kürzere Ausgabe. Der SGQA Code wirft dann doch auch viele Informationen aus. 194269X86X955SQ001&194269X86X955SQ003. Schöner wäre nur den Code der Teilfragen, also SQ001&SQ003. Deswegen die Fragen, ob es eine bekannte Möglichkeit gibt, auf die Codes der Teilfragen zu reduzieren. Ich habe nichts gefunden.
Ok, habe mir die Frage jetzt selbst beantwortet
{str_replace("194269X86X955","",listifop("code", "==","Y","sgqa","&", that.Q2.sgqa))}
Gruß
Das große Ziel ist, die End-URL mit Antworten aus der Umfrage zu bestücken, sodass auf der Landingpage für den Teilnehmer eine kleine kurze Auswertung stattfinden kann. Dies geht über die URL-Parameter. Top!
Mein Ziel ist es, die URL-Parameter so kurz wie möglich zu halten. Deswegen eignen sich die Variable-Attributes .shown / .question nicht, da die Teilfragen ab und an recht lang sind.
Darum bin ich auf die SGQA Codes gekommen. Wenn ich {list(that.Q2.sgqa)} benutze, werden mir alle SGQA Codes der Frage ausgegeben, auch die, die nicht ausgewählt wurden. Mit {listifop("code", "==","Y","sgqa","&", that.Q2.sgqa)} bekomme ich jetzt nur die SGQA Codes, die in der Frage auch angeklickt wurden. Passt!
Am liebsten hätte ich eine noch kürzere Ausgabe. Der SGQA Code wirft dann doch auch viele Informationen aus. 194269X86X955SQ001&194269X86X955SQ003. Schöner wäre nur den Code der Teilfragen, also SQ001&SQ003. Deswegen die Fragen, ob es eine bekannte Möglichkeit gibt, auf die Codes der Teilfragen zu reduzieren. Ich habe nichts gefunden.
Ok, habe mir die Frage jetzt selbst beantwortet

{str_replace("194269X86X955","",listifop("code", "==","Y","sgqa","&", that.Q2.sgqa))}
Gruß
The topic has been locked.
1 year 6 months ago #219849
by Joffm
Daher: Was willst Du mit den SGQA-Codes?
Wie willst Du mit dem SGQA-Code einer Einfachnennung herausbekommen, wie diese Frage beantwortet wurde?
Außerdem ist der SGQA-Code ja auch nur ein Synonym für {Q2}; musste halt benutzt werden, als es ExpressionScript / Manager noch nicht gab.
Wenn ich Daten übergebe, schaue ich auch, dass es kurz wird (der GET-Parameter ist ja sowieso in der Länge begrenzt)
Einfachnennung ist klar: Da "knallt" man einfach die Codes in definierter Reihenfolge mit "join" hintereinander. Sollte es mehrstellige Codes geben, evtl. als "001012004123002..."
Geht auch bei Mehrfach: eben mit "join".
Da kann dann entweder mittels
{join(if(Q1_SQ001=="Y","1","0"),if(Q1_SQ002=="Y","1","0"),if(Q1_SQ003=="Y","1","0"),... einen String erzeugen wie "10011011". Da weißt Du genau, welche Option ausgewählt wurde, welche nicht.
Nach Deinem Beispiel möchtest Du nur die ausgewählten?
Gut, dann eben so
{join(if(Q1_SQ001=="Y","1",""),if(Q1_SQ002=="Y","2",""),if(Q1_SQ003=="Y","3",""),...
Dann gibt es so etwas: "1379"; erstes, drittes, siebtes und neuntes Item wurde gewählt.
Und wieder, wenn es auch zweistellige Codes gibt:
{join(if(Q1_SQ001=="Y","01",""),if(Q1_SQ002=="Y","02",""),...,if(Q1_SQ013=="Y","13",""),...
Das ist alles auf jeden Fall kürzer als wenn Du immer das "SQ0.." mit herumschleppst.
Bei Matrizen kannst Du wieder ein simples join machen (vorausgesetzt einstellige Codes, und nicht den "A1", "A2",... Unsinn)
join(that.Q1) gäbe dann eben so etwas wie "5526154331", die Antwortcodes der Teilfragen der Matrix
Die Zielanwendung kann dann ja leicht mittels "substr" die Antwort zu jeder Frage herausfischen.
Und diese Erzeugung des Übergabestrings würde ich in einer Gleichungsfrage "eqParam" vorziehen, dass in der end-url nur noch steht : "https://......?param={eqParam}
Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Replied by Joffm on topic Ausgabe Antworten aus MultiSelect & Matrix
Das hatte ich mir am Anfang auch gedacht.die End-URL mit Antworten aus der Umfrage zu bestücken
Daher: Was willst Du mit den SGQA-Codes?
Wie willst Du mit dem SGQA-Code einer Einfachnennung herausbekommen, wie diese Frage beantwortet wurde?
Außerdem ist der SGQA-Code ja auch nur ein Synonym für {Q2}; musste halt benutzt werden, als es ExpressionScript / Manager noch nicht gab.
Wenn ich Daten übergebe, schaue ich auch, dass es kurz wird (der GET-Parameter ist ja sowieso in der Länge begrenzt)
Einfachnennung ist klar: Da "knallt" man einfach die Codes in definierter Reihenfolge mit "join" hintereinander. Sollte es mehrstellige Codes geben, evtl. als "001012004123002..."
Geht auch bei Mehrfach: eben mit "join".
Da kann dann entweder mittels
{join(if(Q1_SQ001=="Y","1","0"),if(Q1_SQ002=="Y","1","0"),if(Q1_SQ003=="Y","1","0"),... einen String erzeugen wie "10011011". Da weißt Du genau, welche Option ausgewählt wurde, welche nicht.
Nach Deinem Beispiel möchtest Du nur die ausgewählten?
Gut, dann eben so
{join(if(Q1_SQ001=="Y","1",""),if(Q1_SQ002=="Y","2",""),if(Q1_SQ003=="Y","3",""),...
Dann gibt es so etwas: "1379"; erstes, drittes, siebtes und neuntes Item wurde gewählt.
Und wieder, wenn es auch zweistellige Codes gibt:
{join(if(Q1_SQ001=="Y","01",""),if(Q1_SQ002=="Y","02",""),...,if(Q1_SQ013=="Y","13",""),...
Das ist alles auf jeden Fall kürzer als wenn Du immer das "SQ0.." mit herumschleppst.
Bei Matrizen kannst Du wieder ein simples join machen (vorausgesetzt einstellige Codes, und nicht den "A1", "A2",... Unsinn)
join(that.Q1) gäbe dann eben so etwas wie "5526154331", die Antwortcodes der Teilfragen der Matrix
Die Zielanwendung kann dann ja leicht mittels "substr" die Antwort zu jeder Frage herausfischen.
Und diese Erzeugung des Übergabestrings würde ich in einer Gleichungsfrage "eqParam" vorziehen, dass in der end-url nur noch steht : "https://......?param={eqParam}
Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
Moderators: Joffm