Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Bedingung für eine Fragegruppe setzen, welche sich auf bedingte Gruppen bezieht

  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
7 months 2 weeks ago #250363 by holch

@holch: Du scheinst auch nördlich des WWÄquators zu leben?


Nein, aktuell lebe ich sehr, sehr, sehr weit südlich des Weisswurstäquators. Ich lebe sogar sehr, sehr weit südlich des echten Äquators (so um die 2500km südlich) leicht südlich vom südlichen Wendekreis. Also deutlich südlich vom Weisswurstäquator, der hier allerdings eher keine Rolle spielt. :-)

@Joffm: Viele Grüße nach Frankfurt am Main, jetzt habe ich deinen Nutzernamen auch verstanden


Und ich gestern auch zum ersten Mal. Hatte das ffm nie getrennt gesehen. Hahahaha.

I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.

Please Log in to join the conversation.

  • Gelimed
  • Gelimed's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
7 months 1 week ago #250390 by Gelimed
Ich lebe sogar sehr, sehr weit südlich des echten Äquators (so um die 2500km südlich) leicht südlich vom südlichen Wendekreis.

Guten Morgen,
erstmal eine banale Frage: Wie geht das, auf eine Textstelle zu antworten wie du das oben gemacht hast?
Also da kommen ja dann fast nur noch Süd-Südamerika, Südafrika, Südaustralien und Neuseeland in Betracht - oder hast du als Seeräuber auf irgend einer kleinen noch nicht erfassten Insel einen Stützpunkt? ;-)

Please Log in to join the conversation.

  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
7 months 1 week ago #250407 by holch

erstmal eine banale Frage: Wie geht das, auf eine Textstelle zu antworten wie du das oben gemacht hast?


Da gibt es 3 Möglichkeiten.

1. Wenn man "Quick reply" verwendet so wie ich das normalerweise tue, dann muss man das "händisch" machen. Man kopiert den Textabschnitt und umschliesst ihm mit "quote" tags, sieht dan so aus:
Code:
[quote]...[/quote]

2. Man klickt auf "Action" und wählt "Quote" aus.
3. Man klickt auf "Action" und "Reply" oder auf "Go to editor". Dort gibt es dann auch die Option Zitate (Quotes) einzufügen.

Also da kommen ja dann fast nur noch Süd-Südamerika, Südafrika, Südaustralien und Neuseeland in Betracht - oder hast du als Seeräuber auf irgend einer kleinen noch nicht erfassten Insel einen Stützpunkt?


Seeräuber natürlich. Nein, Südamerika ist es.

I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.

Please Log in to join the conversation.

  • Gelimed
  • Gelimed's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
7 months 1 week ago #250436 by Gelimed

Seeräuber natürlich. Nein, Südamerika ist es.

...war ja einfach - danke!
Peru, Argentinien, Paraguay oder Brasilien? Entschuldige die Neugier, ich bin immer sehr ineressiert an Lebensgeschichten...
VG
Niklas

Please Log in to join the conversation.

  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
7 months 1 week ago - 7 months 1 week ago #250451 by holch

Peru, Argentinien, Paraguay oder Brasilien? Entschuldige die Neugier, ich bin immer sehr ineressiert an Lebensgeschichten...


Schicke dir ne PM. Aber Peru können wir ja schon mal faktisch ausschliessen, weil da der südliche Wendekreis nicht durchgeht. Dafür kommt Chile mit ins Spiel. :-)

I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.

Last edit: 7 months 1 week ago by holch.

Please Log in to join the conversation.

  • Gelimed
  • Gelimed's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
7 months 23 hours ago #250695 by Gelimed
@holch
Ich habe bis jetzt noch keine PM bekommen - Systemfehler oder so von dir gewollt?
Viele Grüße
Niklas

Please Log in to join the conversation.

  • Gelimed
  • Gelimed's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
7 months 22 hours ago - 7 months 22 hours ago #250696 by Gelimed

Wichtig zu wissen:
1.
In "C" sind als Vorgabeantwort sämtliche Schulen gespeichert in der Form A03Das ist der Schulname                         x
Das "x" deutet an, das jede Zeile 50 Zeichen lang ist.

2.
Alle Codes der Schulen sind dreistellig, also "A01", "A02", "A12"

3. Gruppe GCalc1:
Zunächst werden die Anzahlen der Esser und Nichtesser berechnet.
Dann startet die etwas lange, aber simple Bestimmung der Schulen.
Zunächst werden mit einem simplen "join" und "if" die Schulcodes aneinandergereiht, die einen "Esser" beschulen.
Jetzt geht es los:
a. Nimm die ersten drei Stellen, die erste Schule: substr()
b. Ersetze im "gejointen" String jeden dieser Texte durch "".
c. Und so geht es weiter.

Hallo Joffm,
ich habe mich bemüht, zunächst einmal diesen Teil deiner Ausführungen zu verstehen, aber mit den Hinweisen aus der Bedienungsanleitung und selbst mit den Erklärungen von der KI ChatGPTX ist mir das nicht vollständig gelungen. Wenn du mal Zeit erübrigen könntest, um mir auf die Sprünge zu helfen, wäre ich sehr dankbar.
Also:
zu 1.: "C" ist doch als langer freier Text formatiert - wo sind da die Schulen gespeichert?
zu 3.:
eqB1 (join und if) ist klar, eqS1 "substr(eqB1, 0, 3)" verstehe ich auch noch: "Extrahiere aus dem Sting eqB1 vom Anfang an (0) drei Stellen (3) - also die erste Schule, die einen Esser beschult - richtig?
In eqB2 sagst du dann: "ersetze in eqS1 den oder die Teile, in denen "nix" steht, durch eqB1 - richtig?
Und eqB1 ist Folgendes: join(if(F3a_1 == 1, F2, ""), if(F6a_1 == 1, F5, ""), if(F9a_1 == 1, F8, ""), if(F12a_1 == 1, F11, ""), if(F15a_1 == 1, F14, ""), if(F18a_1 == 1, F17, ""), if(F21a_1 == 1, F20, ""))...also eine Kette der Schulen, die einen Esser beschulen. Richtig?
Ab jetzt ist bei mir ein Knoten drin, da kann ich nicht mehr folgen...:-(

Viele Grüße
Niklas
Last edit: 7 months 22 hours ago by Gelimed.

Please Log in to join the conversation.

  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
7 months 18 hours ago - 7 months 18 hours ago #250707 by holch

und selbst mit den Erklärungen von der KI ChatGPTX


Dass das nix wird ist klar. Ich habe ChatGPT mehrmals getestet und mehrmals dabei erwischt, dass die KI entweder lügt oder völlig falsche Informationen zur Verfügung stellt. Und vor allem was Limesurvey angeht haben wir ChatGPT schon mehrmals dabei erwischt Sachen zu erfinden, die es so einfach nicht gibt. Und das Teil wird noch nicht mal rot dabei. Wenn die KI sagen würde "Kann ich nicht beantworten!" dann wäre das ja OK. Aber nein. Sie erzählt mit voller Überzeugung Quatsch und erfindet irgendwelche Antworten. Ich wäre sehr, sehr, sehr vorsichtig bei Antworten von ChatGPT.

Wenn man die KI dann darauf hinweist sagt sie "Ahhh, sorry, stimmt, mein Fehler. Ich habe Schmarrn erzählt." Danke, das hilft aber nix, weil 90% der Menschen da draussen einfach glauben, was du ihnen erzählst.

Ich habe bis jetzt noch keine PM bekommen - Systemfehler oder so von dir gewollt?


Systemfehler. Habe feststellen müssen, dass das Forum gar keine PM-Funktion mehr hat. 

Kann ja ne email schreiben, wenn das OK ist?

I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.

Last edit: 7 months 18 hours ago by holch.
The following user(s) said Thank You: Gelimed

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
7 months 17 hours ago #250711 by Joffm
Hallo,

"C" ist doch als langer freier Text formatiert - wo sind da die Schulen gespeichert?

Guck doch einfach einmal, welche "Werkzeuge" Dir bei der Frage zur Verfügung stehen!
Wer ChatGPT benutzt, wird auch dies schaffen 

Und eqB1 ist Folgendes: join(if(F3a_1 == 1, F2, ""), if(F6a_1 == 1, F5, ""), if(F9a_1 == 1, F8, ""), if(F12a_1 == 1, F11, ""), if(F15a_1 == 1, F14, ""), if(F18a_1 == 1, F17, ""), if(F21a_1 == 1, F20, ""))..also eine Kette der Schulen, die einen Esser beschulen. Richtig?

Richtig, so steht es dort.
Wenn in F3a_1 der Code  gleich 1 ist (also "Ja"), dann wird die Antwort von F2 (der Schulcode) "gejoined", im anderen Fall eben nichts.
Dann könntest Du erhalten:
A12A03A12A38A12

In eqB2 sagst du dann: "ersetze in eqS1 den oder die Teile, in denen "nix" steht, durch eqB1 - richtig?

Falsch!
Schau bitte im Handbuch nach der Definition von "str_replace"!
[url] manual.limesurvey.org/ExpressionScript_-...mplemented_functions [/url]
Nämlich:
str_replace(search, replace, subject)
Soll heißen: Es werden alle Vorkommen der gerade extrahierten Schule aus dem String gelöscht; wir wollen ja jede Schule nur einmal aufführen.
Im obigen Fall wäre die erste Schule "A12"; diese fliegt danach raus und es bleibt A03A38

Und wenn Du alle Fragen der Gruppe "GCalc1" anzeigst, siehst Du doch ziemlich gut, was im Einzelnen passiert.

Joffm

@holch hat es ja schon ausgeführt:
Für uns sind die Ergüsse von ChatGPT bezüglich LimeSurvey immer ein Quell der Heiterkeit.


 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: Gelimed

Please Log in to join the conversation.

  • Gelimed
  • Gelimed's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
7 months 34 minutes ago - 6 months 4 weeks ago #250718 by Gelimed

Kann ja ne email schreiben, wenn das OK ist?


Ja gerne: [EDIT: Email vom Moderator gelöscht]
Last edit: 6 months 4 weeks ago by holch.

Please Log in to join the conversation.

  • Gelimed
  • Gelimed's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
6 months 4 weeks ago #250736 by Gelimed
Hallo Jo,
vielen Dank!
Den Aufbau von C habe ich jetzt verstanden - ich kannte das Werkzeug "Vorgabe-Antworten" noch nicht.
Die Idee, alle Antworten anzeigen zu lassen, hatte ich auch schon. Leider habe ich mich dann mehr auf die fantasievolle Erklärung mit Beispiel von ChatGPT verlassen, als auf das Handbuch - klingt ja auch erstmal überzeugend:

<< Die Funktion "str_replace" ist eine Funktion in ExpressionScript, die verwendet wird, um einen Teil eines Strings durch einen anderen Teil zu ersetzen. Die Syntax der Funktion lautet:str_replace(original_string, search_string, replace_string)
  • =12.0ptoriginal_string: Der ursprüngliche String, in dem die Ersetzung stattfinden soll.
  • =12.0ptsearch_string: Der Teil des originalen Strings, der ersetzt werden soll.
  • =12.0ptreplace_string: Der Teil, durch den der search_string ersetzt werden soll.
Die Funktion durchsucht den original_string nach dem search_string und ersetzt ihn durch den replace_string. Wenn der search_string mehrmals im original_string vorkommt, werden alle Vorkommen ersetzt.Hier ist ein Beispiel, um die Verwendung der Funktion zu verdeutlichen:str_replace("Hallo Welt", "Welt", "Mars")Das Ergebnis dieser Funktion wäre "Hallo Mars", da der search_string "Welt" im original_string "Hallo Welt" gefunden und durch den replace_string "Mars" ersetzt wurde.>>
Mit deinen Hinweisen habe ich jetzt den Aufbau von GCalc1 auch verstanden - aber auf sowas gekommen wäre ich auf meinem jetzigen Niveau niemals...
Jetzt klemmt es noch im Hirn bei den verschachtelten Funktionen << trim(substr(C, strpos(C, eqS1) + 3, 47)) >>
Was sagt "+3" aus? Also:
"Entferne aus (folgendem Teil folgender Zeichenkette: (C, und zwar ab da, wo zum ersten Mal der Wert aus eqS1 vorkommt + 3) 47 Leerzeichen" - richtig?
Jedenfalls muss die nächste Schule dann so abgefragt werden: trim(substr(C, strpos(C, eqS2) + 3, 47)), Bedingung: eqS2 ist nicht leer. Richtig?

Da ich bisher deinen Aufbau nicht verstanden hatte, wollte ich ihn auch nicht einfach übernehmen - darum habe ich aus Zeitgründen versucht, die Umfrage auf meine dilettantische Art so hinzubiegen, dass es ähnlich rauskommt wie bei dir, siehe Anhang - musst du dir aber nicht antun, wenn Bauchschmerzen drohen! - mich würden noch die Nachteile meiner Fassung interessieren, da kann ich bestimmt noch was lernen.
Beste Grüße und vielen Dank für die Lektionen!

File Attachment:

File Name: 2023-09_li...gung.lss
File Size:747 KB

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
6 months 4 weeks ago - 6 months 4 weeks ago #250738 by Joffm
Hallo,

trim(substr(C, strpos(C, eqS1) + 3, 47))

Also - von innen nach außen:
Es wird die Stelle im String C gesucht, an welcher der erste Schulcode (eqS1) startet. (strpos)

Nebenbemerkung:
Das (in C) anfängliche '#'-Zeichen dient dazu, den Startindex der Schule "A01" größer als 0 zu machen.
"strpos" beginnt nämlich bei "0", dieser Wert bedeutet aber auch gleichzeitig "nicht gefunden". Einfach, um dieses zu vermeiden.


Der String sähe so aus: "A05Gymnasium Fichte-Schule       "
Die Funktion findet den Anfang, der uns herzlich wenig interessiert. Der Name der Schule beginnt ja drei Zeichen später.
Daher starten wir den "substr" drei Zeichen später und lesen nur 47 Zeichen aus, da ja alles zusammen 50 Zeichen lang sein soll.

Jetzt enthalten die meisten Schulnamen wohl noch eine Menge Leerzeichen am Schluss; daher werden diese mit "trim" entfernt.
Dann geht es eben mit der zweiten Schule (eqS2) weiter

Mit deinen Hinweisen habe ich jetzt den Aufbau von GCalc1 auch verstanden - aber auf sowas gekommen wäre ich auf meinem jetzigen Niveau niemals...

Ich denke, eigentlich schon.
Es ist ja dasselbe wie wenn Du Zettelchen mit Codes irgendwelcher Krankheiten auf einem Tisch verteilt vorfindest (Hat jemand im Laufe der letzten Woche einfach aufnotiert; Aufgabe: Mache eine Liste der vorgekommen Krankheiten )
Dann nimmst Du das erste Zettelchen, guckst, welcher Code es ist, und  wirfst alle weiteren Zettelchen mit diesem Code in den Papierkorb (brauchst Du nicht mehr)
Jetzt schaust Du in einem schlauen Buch nach, welche Krankheit sich hinter diesem Code verbirgt.
Dann nimmst Du das zweite Zettelchen, und so weiter.

Man muss einfach den Mut haben, es auf Papier zu skizieren, wie man es machen würde, wenn man es mit körperlichen Objekten zu tun hätte.
Und dann übersetzt man es.
Man sucht die geeigneten Funktionen und baut sie zusammen.
Am Anfang vielleicht jede Funktion getrennt, und wenn es gut aussieht, versucht man ein bisschen zu verschachteln, um zu verkürzen - wie eben in dieser Funktion.

Ich habe so ein Vorgehen ja auch in meinem "Tutorial 4: Gleichungen, Zufall,.."  beschrieben - (Kap. 3.2.2)

So, das war's wohl zunächst einmal.
Ich werde zwar nicht zu @holch in seine "Strandhütte" reisen, aber ein bisschen Urlaub muss sein. 

Joffm

Und hier hast Du ja gesehen, welchen Schwachsinn ChatGPT oft verbreitet
Da werden die Parameter schlicht vertauscht
Statt "str_replace(search, replace, subject)" wird von "str_replace(subject, search, replace)" gefaselt.

Nimm lieber die Auflistung der benutzbaren Funktionen im Handbuch?
Und die meisten sind ja auch als Link zur php-Hilfe angelegt, wo man eben die richtige Syntax und immer viele, viele Beispiel findet.

Ich weiß schon, warum ich auch sehr, sehr vorsichtig bin, wenn Leute hier beginnen mit "Ich habe bei Google gesucht,...", oder ähnliches.

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 6 months 4 weeks ago by Joffm.
The following user(s) said Thank You: Gelimed

Please Log in to join the conversation.

Moderators: Joffm

Lime-years ahead

Online-surveys for every purse and purpose