Welcome to the LimeSurvey Community Forum

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

Evaluationsfragebogen, einer mit Kursauswahl, der andere mit Antworten

  • AlexNoyon
  • AlexNoyon's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
1 year 10 months ago - 1 year 10 months ago #237197 by AlexNoyon
Bitte helfen Sie uns, Ihnen zu helfen und füllen Sie folgende Felder aus:
Ihre LimeSurvey-Version: 3.28.40+221129
Eigener Server oder LimeSurvey-Cloud: eigener
Genutzte Designvorlage: Vanilla theme
==================
Hallo Community!
Ich versuche gerade, einen Evaluationsfragebogen für zwei Studiengänge zu basteln. Joffm hat mir dabei im englischen Forum schon extrem geholfen - danke! Die Grundidee ist:
a) In Umfrage 1 werden allgemeine Fragen zum belegten Studiengang und der ganzen Hochschule gestellt. Außerdem gibts eine Auswahlmöglichkeit, in der alle belegten (und damit zu evaluierenden) Kurse gelistet werden. Diese werden ausgewählt, und dann...
b)... wird am Ende das Ergebnis mit einer End-URL direkt an den zweiten Fragebogen durchgereicht und dort werden nur noch die Kurse abgefragt und die Daten eingesammelt, die die Leute auch besucht haben. 

Das funktioniert jetzt auch schon basal mit zwei Dateien, die mir Joffm netterweise zur Verfügung gestellt hat. Joffm, falls du hier mitliest, ich habe jetzt schon mal Sprache angepasst, deine voreingestellten Fächer gelöscht und durch ein paar eigene ersetzt und so weiter, kleine Anpassungen. Scheint alles zu funktionieren. 
In einer deiner früheren Messages hattest du aber unter anderem diese Auswahlmöglichkeit hier einkopiert:

 

Das wäre das Format, in dem ich die Kurse auch gerne dargeboten hätte, denn ich glaube, meine Studis kommen mit diesem Auto-Fill, wie es im Moment ist, nicht zurecht. Das Format hier mit dann in meinem Fall einer Überschrift pro Semester wäre perfekt. Da brauchen die allermeisten dann eh nur einen Abschnitt, klicken da alles an, und fertig. Maximal dann noch ein oder zwei weitere Abschnitte. Ich glaube, da passieren weniger Fehler, wenn sie alle Fächer sehen und nacheinander einfach klicken können, statt sich erst mal eine Liste machen zu müssen, um von allen die Anfangsbuchstaben einzutippen.
Aber ich kriege das nicht hin, wie man diese Darstellung da oben baut. Geht das mit dem jetzt bestehenden Datensatz, oder muss die Grundstruktur dann ganz anders sein? Ich habe deshalb auch mal lieber noch gar nicht groß weitergemacht mit den einzelnen Fächern, sondern nur ein paar wenige als Anschauung, falls man die alle irgendwo separat einbauen muss.
Also, ich wäre für jeden Hinweis dankbar, wie man das mit dieser Darstellung oben hinbekommt, danke!
Hier noch die Dateien, wie sie jetzt inzwischen sind:

 

File Attachment:

File Name: Basis Eval.lss
File Size:107 KB


 

File Attachment:

File Name: Details Eval.lss
File Size:41 KB


Danke! Viele Grüße, Alex
 
Last edit: 1 year 10 months ago by AlexNoyon.

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 10 months ago #237201 by Joffm
Hallo, Alex,

dazu solltest Du am besten die Datei aus dem Tutorial 2 herunterladen und importieren.

Aber hier ist das script.
Zu beachten:
headerRowPrefix: Prefix, um den Headertext zu erkennen
textRowPrefix: Prefix, um eine Sonstige-Nennung zu erkennen
columns: Anzahl der angezeigten Spalten
Code:
<script type="text/javascript" data-author="Tony Partner">
 
  $(document).on('ready pjax:scriptcomplete',function(){
 
    // Identify this question
    var qID = '{QID}';
    var thisQuestion = $('#question'+qID);
 
 
    /****** HEADER ROWS ******/
 
    // Find the header rows
    var headerRowPrefix = 'O';
    var headerRows = $('li[id^="javatbd"]', thisQuestion).filter(function() {
      return $(this).attr('id').includes('X'+qID+headerRowPrefix+'');
    });
 
    // Loop through the header rows
    $(headerRows).each(function(i) {
      // Assign a class name
      $(this).addClass('inserted-header-row')
      // Move the label
      .prepend($('label.control-label:eq(0)', this))
      // Remove unecessary elements
      .find('input, div').remove();
    });
 
 
    /****** ANSWERS INTO COLUMNS ******/
 
    // Number of columns to display (max 4)
    var columns = 4;
 
    thisQuestion.addClass('with-inserted-columns columns-'+columns+'');
 
 
    /****** REMOVE SOME TEXT INPUTS ******/
 
    // Find the rows to keep text inputs
    var textRowPrefix = 'oth';
    var textRows = $('li[id^="javatbd"]', thisQuestion).filter(function() {
      return $(this).attr('id').includes('X'+qID+textRowPrefix+'');
    });
 
    // Remove text inputs from all except those rows
    $('li[id^="javatbd"]', thisQuestion).not(textRows).find('div.text-item').remove();
  });
</script>

Und viel css
Code:
<style data-author="Tony Partner" type="text/css">li.inserted-header-row {
    float: none;
    clear: both;
    flex: 0 0 100%;
  }
 
  li.inserted-header-row label {
/* Hier wird das Layout der Überschrift; kann man alles nach Gusto ändern */
    padding-left: 15px;
    padding-right: 15px;
    padding-top:0 !important;
    font-weight: bold;
    width: 100%;
    background-color:#e29514;;
    border: 1px solid gray;
    border-radius: 5px;
    font-size: 18px;
    color: #001957;
  }
  li.inserted-header-row label::before,
  li.inserted-header-row label::after{
    display: none;
  }
 
  @media only screen and (min-width: 768px) {
 
    .with-inserted-columns ul.ls-answers {
      display: flex;
      flex-flow: row wrap;
    }
 
    .with-inserted-columns ul.ls-answers li {
      margin: 0 0 1em 0;
      padding: 0 15px 0 0;
    }
 
    .with-inserted-columns.columns-2 ul.ls-answers li { flex: 0 0 50%; }
    .with-inserted-columns.columns-3 ul.ls-answers li { flex: 0 0 33%; }
    .with-inserted-columns.columns-4 ul.ls-answers li { flex: 0 0 25%; }
    .with-inserted-columns.columns-5 ul.ls-answers li { flex: 0 0 20%; }
 
    .with-inserted-columns ul.ls-answers li.inserted-header-row {
      flex: 0 0 100%;
      padding: 0;
    }
 
    .with-inserted-columns ul.ls-answers li > div {
      float: none;
      width: auto;
    }
 
    .with-inserted-columns ul.ls-answers li label {
      text-align: center;
    }
 
    .with-inserted-columns ul.ls-answers li input[type="text"] {
      margin-top: 0.7em;
    }
  }
</style>

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless

Please Log in to join the conversation.

  • AlexNoyon
  • AlexNoyon's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
1 year 10 months ago #237308 by AlexNoyon
Hi Joffm,

danke für die Daten und Links! Ich hab das Tutorial 2 gefunden, das ist ja irre, was da noch alles geht... Aber ich hab jetzt eine ganze Zeitlang versucht, mir herauszusuchen, wo genau da welcher Code eingebaut werden muss. Ich merke, dass ich - da im Grunde in CSS und auch dem Script-Code für Limesurvey völlig ahnungslos - aber leider nicht genug begreife, um die richtige Stelle zu finden. Ich habe es sowohl in Limesurvey selbst, bei den Fragedefinitionen, über den Quellcode-Button versucht als auch mit dem Texteditor durch copy and paste direkt in die lss-Datei und dann wieder neu auf den Server laden. Klappt aber nicht. Ich vermute mal, dass man da die Fragen auch genau aufeinander abstimmen muss?! Da übersehe ich glaube ich etwas.

Du hast ja in deiner Tutorial Mehrfachnennung Datei 20 Fragegruppen drin. Die G2.5 ist die, die ich so cool finde für meinen Eval-Fragebogen. Verstehe ich es richtig, dass man dann alle Fragen aus der Fragengruppe einbasteln muss, damit das dann am Ende auch wirklich alle Elemente erfasst? Was ich - unter anderem - noch nicht checke ist, wie die dann mit den anderen Fragen zusammenhängt. Und insbesondere, wie ich das dann in meine schon bestehende "Umfragebasis"-Datei einfüge, so dass das von dir gestrickte Pool-Item, das ja dann die Auswahl an den zweiten Survey übergibt, auch erhalten bleibt. Oder muss man da nichts verknüpfen?
Du siehst schon, wirklich ahnungslos... wenn meine Fragen aufzeigen, dass das bei meinem Kenntnisstand hoffnungslos ist, hier durchzusteigen, dann wäre ich für ein "lass es lieber sein" dankbar. Wenn ich aber nur abstellbare Denkfehler und Lücken habe, dann bin ich gespannt, ob du die stopfen willst/kannst!
Danke und viele Grüße, Alex

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 10 months ago #237310 by Joffm
Hallo,
jetzt verstehe ich Dich nicht.

In Gruppe G2.5. ist doch nur eine Frage.
Und wenn Du sie anschaust (im Quellcode-Modus), siehst Du auch das script sowie das css.
Und in den Teilfragen siehst Du auch alles Nötige.

Da ist ja nicht viel dabei.

Und jetzt zum Pool.
Dies ist jetzt ja viel einfacher, da Du wohldefinierte Codes hast, die von den Studenten ausgewählt wurden.
Beim Autocomplete musste man ja irgendwie über strpos die gewählten Kurse finden
Daher benötigst Du in der generellen Datei gar keinen Pool, der ja nur dazu da war, eine Kursnummer zu generieren.
Du hast die Codes der gewählten Kurse, d.h.. Du kannst sie direkt aneinanderfügen.
Ich würde daher die Codes irgendwie so aufbauen.
K001, K002, ..., K087,...
Dann würde ich den Übergabeparameter folgendermaßen generieren
{join(if(QCODE_K001=="Y","001",""),if(QCODE_K002=="Y","002",""),if(QCODE_K003=="Y","003",""),...

So, jetzt lege einmal los.

Und schicke bei weiteren Fragen Deine Werk als lss Export.

Joffm

als auch mit dem Texteditor durch copy and paste direkt in die lss-Datei und dann wieder neu auf den Server laden.

Über diese Idee schüttele ich immer noch den Kopf.
Es steht doch fast in jedem Kapitel etwas wie

Der folgende javascript Code wird dazu in den Fragetext (im Quellcode-Modus) eingefügt.


 

Volunteers are not paid.
Not because they are worthless, but because they are priceless

Please Log in to join the conversation.

  • AlexNoyon
  • AlexNoyon's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
1 year 10 months ago #237794 by AlexNoyon
Hi Joffm,

ok, danke, das war hilfreich! Ich bin wieder ein bißchen weiter, aber stecke noch fest an ein paar Stellen.
Das mit der Mehrfachwahl-Frage hab ich glaube ich jetzt kapiert, in der "Basis"-Datei umgesetzt. Durch Relevanzgleichung hab ich gesichert, dass die Leute, die "Bachelor" anklicken, dann nur die Teile für BA zu sehen kriegen und "Master" entsprechend. Da hab ich aber erst mal nur paar Beispiele aufgenommen, nur die komplette Semesterstruktur. Das füll ich erst auf, wenn es wirklich strukturell funktioniert.
Denn da häng ich noch: Die einzelnen Kurse hab ich jetzt wie von dir vorgeschlagen K001 usw. benannt. Und in die Frage eqKurs den von dir genannten Code mit "join(if...)" aufgenommen. Aber da stimmt was nicht. In der Fragenübersicht sind die ganzen QCODE...-Variablen nicht definiert. Was übersehe ich da? Ich hab das so verstanden: Der soll hier nachschauen, ob bei Kurs X (z. B. K003) ein klick gesetzt wurde, wenn ja, dann setzt er das auf "zählt" und übergibt diesen Kurs.
Was ich dann weiter nicht blicke ist, welche Rolle genau da dann noch die "Pool2"-Frage spielt. Da sind im Quellcode ja jede Menge Länder drin. Ist das irgendein default? Braucht man das? Ich hab es so verstanden, dass in diesen "Pool2" die Ergebnisse der Abfrage oben reingeschrieben werden. Korrekt? Oder brauchts das gar nicht mehr und das war nur Bestandteil von der vorherigen Pool-Frage?
Und wie funktioniert dann die Übergabe an die "Details"-Datei? Diese Schnittstelle kapier ich nicht. Ich dachte, es geht so, dass der Details-Fragebogen in der End-URL aufgerufen wird. Die steht ja korrekt da, der Aufruf funktioniert auch. Aber jetzt, nachdem ich "Generell" geändert habe wird da nichts Brauchbares mehr übergeben. Das erfolgt ja über die Parameter nach der URL. Ich verstehe das so, dass die ersten Fragen in "Details" diese Daten aufnehmen. Aber da muss jetzt, wo "Pool" einfacher läuft, wahrscheinlich auch was weg bzw. geändert werden.
Also, wenn du mir da noch mal die Richtung zeigen könntest, das wäre mega!
Und zum Wühlen in der lss-Datei: Hab ich nicht gesehen, dass das "verpönt" ist :D Ich hatte nur irgendwo deinen Hinweis gesehen, dass man zum Switchen der Sprache mit Suchen-Ersetzen sicherstellen muss, dass alle relevanten Stellen auch wirklich auf DE gesetzt sind. Hab dann angenommen, das geht nur in der lss, da hab ich es auch von EN auf DE gesetzt und das hat geklappt. Und da dachte ich, die Profis machen die Handarbeit dann direkt in der lss. Ok, wieder was gelernt :side:
Viele Grüße und schönes Wochenende, Alex

File Attachment:

File Name: Details.lss
File Size:49 KB

File Attachment:

File Name: Basis.lss
File Size:284 KB

Please Log in to join the conversation.

  • AlexNoyon
  • AlexNoyon's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
1 year 10 months ago #237795 by AlexNoyon
Ähm, und warte mal... ich bin jetzt ganz wuschig, kapiere gerade nicht mehr den Vorteil von den zwei Fragebögen. Wenn ich jetzt für jeden Kurs, den die belegt haben, im ersten Teil ein "ja" kriege, dann könnte ich doch auch noch im selben Fragebogen für jeden denkbaren Kurs eine eigene Fragegruppe generieren und die per Relevanzgleichung nur dann anzeigen lassen, wenn im oberen Teil "ja" beim Kurs geklickt wurde?! Oder bin ich jetzt völlig auf dem Holzweg?

Please Log in to join the conversation.

  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 10 months ago #237930 by holch
Theoretisch ja. Aber: Wieviele Fragen / Unterfragen hast du schon in deinem Basisfragebogen? Jede Frage mit Mehrfachantworten braucht ja eine Tabellenspalte pro Antwort.

Wieviele Kurse gibt es insgesamt?
Wieviele Fragen gibt es pro Kurs?

Deine Datenbank kommt irgendwann an ihre Grenzen. Das lässt sich nicht 100% sagen, weil es auf die Datenbank-Engine ankommt und auch auf die verschiedenen Typen von Fragen. Aber so ab 1000-1200 Spalten wird es knapp in der Datenbank.

Ich bilde mir ein, dass du irgendwie 120 Kurse insgesamt hattest, richtig? Wenn du jetzt pro Kurs 10 Spalten brauchst (also 10 Einfachfragen oder mögliche Mehrfachantwortoptionen), dann hast du schon 1200 Spalten nur für die Kurse. Wenn du nur wenige Einfachfragen und keine Mehrfachantwortfragen pro Kurs hast, dann kann man das alles in einen Fragebogen zimmern, ist auch sauberer für die Auswertung.

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.

  • AlexNoyon
  • AlexNoyon's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
1 year 10 months ago #237932 by AlexNoyon
Hallo Holch,

ja, stimmt, das hattet ihr geschrieben, ich erinnere mich. Das wird dann im Grunde schon eng, aber ich hab mir heute zwischendurch überlegt, dass ich zwei unabhängige Fragebögen mache - einmal Pflichtkurse, einmal Wahlpflichtkurse. Dadurch sollte es so ungefähr eine Verteilung von 80 zu 40 geben, und damit sollte es dann ja halbwegs klappen, hoffe ich?! Danke für deine Antwort am Wochenende!

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 10 months ago #237934 by Joffm
Ob es dann klappt merkst Du erst, wenn Du aktivierst; dann könntest Du Dir sehr, sehr viel Arbeit unnötig gemacht haben.
Du hast geschrfieben "Eigener Server". Heißt das, Du weißt, wie LimeSurvey installiert ist?
Es gibt nämlich auch den Unterschied, welche Datenbank-Engine bei MySQL bzw. MariaDB benutzt wird.
Bei InnoDB hast Du 1000 Spalten bei MyISAM zwischen 1500 und 1700.

Aber egal.
Zu Deiner lss-Datei.
Wenn Du alles herausschmeißt, was nur wegen des "autocompletes" nötig war, bleiben die Fragen Q3, Q4B und eqKurs.
Und dann steht in eqKurs aber nicht "QCODE_". Dies ist doch nur ein Platzhalter für den Fragecode, wie er auch im Handbuch benutzt wird.
Hier musst Du natürlich den richtigen Fragecode einsetzen.

Zu den Codes:
Ich hätte sie etwas "sprechender" gemacht.
Z.B.
B101, B102, B103 für den ersten, zweiten, ditten Kurs des ersten Semesters Bachelor
M201, M202 für den ersten, zweiten Kurs des zweiten Semesters Master.
Wenn Du dies dann so übergibst, kannst Du in der Detail-Studie direkt darauf referenzieren, d.h. Du kannst in einer Textanzeige immer sagen
Sie haben im {if(substr(Kurs,0,1)=="B","Bachelor","Master")}-Studiengang den Kurs ... des {substr(Kurs,1,1)}. Semesters gewählt.
Aber das ist marginal.

Und natürlich ist es auch immer noch möglich, nur 15 Gruppen zu bilden (nei max. 15 auszuwählenden Kursen) und dann die gewählten Kursnamen und Nummern dort jeweils einzupipen.
Ist kurz in LimeSurvey, aber Du musst dann eben in Excel die Daten so umstrukturieren, dass Du jeden Kurs in einem separaten Bereich hast.
Das ist aber auch mit einem Makro schnell erledigt.

Es liegt an Dir, wo Du Arbeit investieren willst.
Ich werde einmal die Basis-Detail-Geschichte erstellen.

Übrigens: Ich frage mich jetzt, wieso Du dieses script benutzt, wenn Du doch nur einspaltig darstellst.
Dieses ist ja extra dafür gemacht, dass man eine mehrspaltige Darstellung mit Headern hat.
Einspaltig wäre ja mehr oder weniger Standard gewesen.
Allerdings wird es dann wieder sehr, sehr lang bei der Gesamtzahl der Kurse.

Bis dann
Joffm
 

Volunteers are not paid.
Not because they are worthless, but because they are priceless

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 10 months ago #237935 by Joffm
Jetzt weiß ich auch, warum es bei Dir einspaltig dargestellt wird.
Du hast eine Frage vom Typ "Mehrfachnennung" genommen, obwohl dies nur für eine Frage vom Typ "Mehrfach mit Kommentar" funktioniert
Das Kapitel 2. des Tutorials befasst sich doch nur mit diesem Fragentyp.

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless

Please Log in to join the conversation.

  • AlexNoyon
  • AlexNoyon's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
1 year 10 months ago #238503 by AlexNoyon
Hi Joffm,

danke für die Details! Alles klar, ich werde mich mal bei unserem "Installateur" erkundigen, wie genau die Datenbank-Engine ist. Das sollte ich rauskriegen - war mir nicht klar, dass es da solche Unterschiede gibt.
Und danke für das mit den QCODE_ - du siehst schon, ich bin hier wirklich blutiger Anfänger, ist sicherlich sehr banal für dich, aber das hab ich nicht gesehen. Ich werde das noch mal umfrisieren.
Und das mit "Mehrfachnennung mit Kommentar" war ein Versehen, das stelle ich dann noch um.
Du schreibst, dass du die Basis-Detail-Geschichte erstellen wirst? Du meinst, du schickst mir da noch mal eine Vorlage? Das wär natürlich großartig! Aber ich will hier echt keine Arbeit machen, weil ich es nicht kapiere - ich hab schon den Eindruck, ich schwimm hier in einem Teich, für den ich definitiv eigentlich zu klein bin...
Das mit den "sprechenderen Codes" ist cool, werde ich anpassen, danke!
Viele Grüße, Alex

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 10 months ago #238905 by Joffm
Mein Gott, das mit der Datenbank-Engine war doch nur beiläufig, um zu zeigen, dass Du auch mit Deiner Aufsplittung in zwei Studien (B & M) Probleme bekommen kannst.
Ich würde mich darum gar nicht mehr kümmern, da m.E. die "Geradeaus-Lösung" mit um die 80 Fragegruppen "vom Tisch" sein sollte.

a. Die Basis-Detail-Lösung hat ihren Charme, ist kurz, einfach zu implementieren.
b. Die Lösung in einer Umfrage mit (meinetwegen) 15 Gruppen, in welche die Kursnamen eingepiped werden, ist im Grunde ähnlich.

Und bei beiden musst Du vor der eigentlichen Analyse die Daten umstrukturieren.
Bei Lösung a stehen alle Kurse mit den zugehörigen Fragen in einem Block, bei Lösung b eben verstreut in 15 Blöcken.
Einem Excel-Makro ist dies egal, ob es nur in einer Spalte nachschaut und die Fragenblöcke dann entsprechend der Kursnummer in ein anderes Arbeitsblatt schiebt, oder on es 15 Spalten durchläuft.

Jetzt aber noch eine Anmerkung:
Die Lösung mit dem von Dir im Moment benutzten script verschlingt doppelt so viele Datenbank-Spalten wie Kurs (es ist ja eine Mehrfachnennung mit Kommentar)
Daher wäre es besser, eine simple Mehrfachnennung zu benutzen; damit sie nicht so lang wird, kann man (wie Bachelor vs. Master) nach den Semestern fragen (Mehrfachnennung), natürlich gefiltert und dann nur noch diese Kurse anzeigen
Etwa so:
 


Das ist dann allerdings ein anderes script, um die Header zu erzeugen, und auch für den verringerten Zeilenabstand

Joffm

 

Volunteers are not paid.
Not because they are worthless, but because they are priceless

Please Log in to join the conversation.

Moderators: holchJoffmtpartner

Lime-years ahead

Online-surveys for every purse and purpose