Welcome to the LimeSurvey Community Forum

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

Begrenzung der Anzahl der Antworten auf eine Antwortmöglichkeit (in Echtzeit)

  • AileenBalkenhol
  • AileenBalkenhol's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
3 years 8 months ago - 3 years 8 months ago #203738 by AileenBalkenhol
Hallo zusammen,

zunächst Danke, dass Ihr Euch die Mühe macht, meinen Post zu lesen und für Eure Bereitschaft mir zu helfen.

Ich möchte Limesurvey als Tagungsanmeldung benutzen. Das meiste ist kein Problem und klappt gut.
Jetzt allerdings habe ich eine Phase auf der Tagung in der gleichzeitig mehrere Workshops stattfinden, an denen nur jeweils 25 Personen teilnehmen sollen.

Ich weiß, dass ich in Limesurvey mit Quoten arbeiten kann, die auch zulassen, dass die User ihre Antwort anpassen. Das wird dem User allerdings erst nach dem Klick auf "absenden" angezeigt.

Gibt es
a) die Möglichkeit, dass dies (Workshop ist voll) "in Echtzeit" bei der Auswahl der Antwortmöglichkeit bereits angezeigt wird? oder
b) dass diese Antwortmöglichkeit gar nicht mehr angezeigt/gesperrt wird?
c) die Möglichkeit, dass, wenn der User auf zurück klickt, nicht alle seine bereits eingegebenen Daten weg sind und diese neu eingegeben werden müssen?

Wobei ich bei c) - selbst bei einer Lösung - immer noch das Problem habe, dass die User alle Daten eingeben und nach und nach alle Workshopangebote durchprobieren und dann auf absenden klicken und immer eine fehlermeldung bekommen, weil schon alle Workshops voll sind, was ja mehr als frustrierend ist.

LimeSurvey Version: 3.22.210+200804

Ich habe bereits diesen Thread forums.limesurvey.org/forum/german-forum...3%A4hlt-hat-o-%C3%A4 zur Kenntnis genommen. Da scheint es ja so, dass es nicht geht, aber da die Antworten 5-8 Jahre alt sind, hat sich ja vielleicht etwas getan?

In dem besagten Thread habe ich gelesen, dass so etwas mal für einen Einzelfall programmiert wurde, was vielleicht programmiertechnisch an meine Problemstellung angepasst werden könnte. Falls das denkbar wäre, würde ich mich einseits über Hinweise für unsere Haus-IT freuen wie es gehen könnte oder andererseits über eine grobe Kosten-/Zeiteinschätzung, was da auf mich zu käme, wenn das jemand aus dem Forum übernäme.

Ich bedanke mich im Voraus für die freundlichen Antworten und wünsche einen schönen, sonnigen, aber nciht zu heißen Tag :)

Herzliche Grüße
Aileen
Last edit: 3 years 8 months ago by AileenBalkenhol.
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 8 months ago #203739 by Joffm
Hallo, Aileen,
vergiss einmal diesen von Dir zitierten Uralt-Thread.

Prinzipiell gibt es sicher bessere Tolls für diese Aufgabe als LimeSurvey.
Aber es geht natürlich.

Mit Quoten wirst Du nicht viel erreichen. Eine Quote würde den Teilnehmer ja rausschmeißen, wenn er eine Veranstaltung klickt, die nicht mehr zur Verfügung steht.
Er soll seine Wahl aber ändern können.
Das ist ein fehlendes Feature von LS; man hat keinen Zugriff auf die aktulle Füllung einer Quote aus der Umfrage heraus.

Jetzt zu den Lösungen:
Es gibt die "weiche" Methode, die anzeigt, wieviele Plätze noch frei sind. Dazu gibt es das Plugin "getStatInSurvey"
gitlab.com/SondagesPro/ExportAndStats/getStatInSurvey
Wenn ein Teilnehmer dann trotzdem eine bereits volle Veranstaltung klickt, fliegt er mit der Quote raus. Wenn er "so blöd" ist, hat er nichts anderes verdient. ;)

Desweiteren kann man es aber "vollständig" machen, indem man immer nur die Veranstaltungen anzeigt , in welchen noch Plätze frei sind.
Dazu benutzt man einen sogenannten "ajax call"; d.h. es wird von LS ein externes script aufgerufen, welches die LS-Datenbank abfragt. Dieses script muss man programmieren, z.B. in php.
Genau dazu gibt es irgendwo hier einen Thread von mir;
forums.limesurvey.org/forum/german-forum...it-limesurvey#187399

Jetzt muss ich nur noch mein damaliges Beispiel finden.

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: TobiStark, AileenBalkenhol
The topic has been locked.
  • AileenBalkenhol
  • AileenBalkenhol's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
3 years 8 months ago #203741 by AileenBalkenhol
Super vielen Dank schon Mal für Deine Antwort! Es freut mich sehr, dass sich das Problem scheinbar lösen lässt. Wenn Du noch mehr zu diesem Thema z. B. Dein Beispiel findest, bin ich eine dankbarer Abnehmerin. Jetzt beschäftige ich mich erstmal mit dem Thread auf den Du mich hingewiesen hast und Deinen Lösungsvorschlägen.

Auf die Idee statt nach meinem konkreten Problem nach meinem Anwendungszweck zu suchen, bin ich gar nicht gekommen :blink: - auch für den Hinweis ein herzliches Danke. Das wird sicher auch für zukünftige Herausforderungen noch ein guter Tipp gewesen sein :)

Dass es generell für Anmeldungen bessere Tools gibt, stimmt sicherlich und hatte ich auch vermutet, aber Limesurvey war gerade nun mal da (installiert, lauffähig und bereits mit passendem Design versehen) und damit kenne ich mich wenigstens ein wenig aus... schien mir daher die schnellste, wenn auch nicht beste Lösung zu sein. Und wenn wir das jetzt noch so tipptopp hinkriegen, sind glaube ich alle begeistert - ich jedenfalls :cheer:

Herzliche Grüße
Aileen
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 8 months ago #203753 by Joffm
Hallo, Aileen,
ja, das Suchen ist eine Crux hier.
Sehr viele Topics sind irreführend, sehr oft werden Fragen nachgeschoben, die nichts mit der ersten Frage zu tun haben, usw.
Nur als Schmankerl dazu:
Im englischen Teil, in der Sektion "Can I do this with Limesurvey?" gibt es wirklich einen Thread mit der Überschrift "Can I do this with Limesurvey?"
Da fragt man sich dann.

Übrigens habe ich mein Beispiel mit ajax call gefunden.
Jetzt werde ich noch eins mit dem plugin machen.
Warte einmal bis morgen.

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: TobiStark, AileenBalkenhol
The topic has been locked.
  • AileenBalkenhol
  • AileenBalkenhol's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
3 years 8 months ago #203754 by AileenBalkenhol
Hallo zurück,

ja, man lernt nie aus, auch was suchen in einem Forum angeht. Aber das von Dir genannte Beispiel ist ja wirklich ... bezeichnend, soll man da lachen oder weinen? :S

Danke für Deine Mühe, dann warte ich geduldig auf morgen und freue mich total über die super Unterstützung! :)

Herzliche Grüße
Aileen
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 8 months ago - 3 years 8 months ago #203786 by Joffm
Hallo, Aileen,
hier zunächst das Beispiel mit dem ajax call, wie es hier beschrieben wurde.
forums.limesurvey.org/forum/german-forum...it-limesurvey#187399

Der javascript-Teil in der Frage "Erg" (für "Ergebnis"; die kann auch anders heißen)
Code:
<script type="text/javascript" charset="utf-8">
$(document).on('ready pjax:scriptcomplete',function(){
  $.post('http://www.myServer.de/myFolder/getTermin.php' , { sid: "{SID}", gid: "{GID}", qid:"{QID}" , quotid:"19152", vorgabe:"{eqVorgabe}" }, function(data) {
 
                   $('#question{QID} input[type="text"]').val(data)
 
      });
  });
</script>

Und hier noch ein bisschen css, um den Antwortcontainer zu verstecken.
Code:
<style type="text/css">.ls-answers, .answer-container { display: none; }
</style>


Man schreibt sich also ein script in irgendeiner Web-Sprache (ich habe eben php genommen).
Dieses wird hier aufgerufen und als Parameter werden übergeben:
SID: StudienID
GID: GruppenID
QID: FragenID dieser Frage
quotid: FragenID der Frage nach dem Termin (dies ist der einzige Wert, der angepasst werden muss)
eqVorgabe: Die Vorgabewerte mit der Funktion "list" zu einem String verknüpft.

Als Rückgabewert erhält man einen String, der für jeden Termin die Anzahl der vergebenen Plätze enthält (dreistellig mit führenden Nullen), also z.B.
002012004005 -> bei den vier Terminen sind bereits 2, 12, 4 und 5 Plätze besetzt.

Wie man das script programmiert, ist ziemlich egal; es muss nur dieses Ergebnis liefern.
Hier ist meins (schematisch):
Code:
<?php
 
// Zunächst Verbindung zur Datenbank; ich benutze hier z.B. die Bibliothek "meekrodb"
//Da kann man ja das gewohnte benutzen "mysqli, pdo, ..."; meekrodb ist auch nur ein wrapper für pdo.
 
require_once 'meekrodb.class.php';
  DB::$host='myHost';
  DB::$user='myUser';
  DB::$password='myPasswort';
  DB::$dbName='myDBName';
 
// Die übergebenen Parameter werden in Variablen eingelesen
$iSID = $_POST["sid"];
$iGID = $_POST["gid"];
$iQID = $_POST["qid"];
$iQuotID = $_POST["quotid"];
$iVorgabe = $_POST["vorgabe"];
 
// Dies ist etwas umständlich; ich will damit nur die Anzahl der möglichen Termine erhalten
$iVorgabe=str_replace("(","",$iVorgabe);
$iVorgabe=str_replace(")","",$iVorgabe);
$iVorgabe=str_replace(" ","",$iVorgabe);
$aVorgabe=explode(",",$iVorgabe);
 
// Der SGQA Code der Tabellenspalte wird zusammengebaut
$iFQuoteID=$iSID.'X'.$iGID.'X'.$iQuotID;
 
//Jetzt erfolgt für jeden Termin (Code) die Abfrage nach der Anzahl und die Zusammenstellung des Ergebnisstrings
$result="";
for ($i=1;$i<=count($aVorgabe);$i++) {
  $daten[$i] = DB::queryFirstRow("SELECT count(".$iFQuoteID.") as Zahl FROM lime_survey_".$iSID." WHERE (submitdate is not NULL) AND (".$iFQuoteID."=".$i.")");
  $result.=str_pad($daten[$i]['Zahl'],3,"0",STR_PAD_LEFT);
}
 
// Rückgabe
echo $result;
?>

File Attachment:

File Name: Termin_ajax.lss
File Size:47 KB


Bedenke: Dieses Beispiel war für das Szenario mit einer Warteliste.
Ich habe es so gelassen, weil es eine zusätzliche Möglichkeit bietet.

Im nächsten Beispiel, mit dem plugin, zeige ich dann, wie man bereits gefüllte Termine gar nicht zur Auswahl anbietet.

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 3 years 8 months ago by Joffm.
The following user(s) said Thank You: AileenBalkenhol, moehre
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 8 months ago - 3 years 8 months ago #203788 by Joffm
So, hier ist jetzt das Beispiel mit dem Plugin.
Wie auf der Website gesagt

You can not use this system in expression manager for answer part in LimeSurvey 3 and up.

ist es jetzt ein bisschen "von hinten durch die Brust ins Auge".
Aber es geht.

Im Endeffekt habe ich zwei Möglichkeiten der Darstellung:
1. Es werden nur offene Termine angezeigt. Dafür war dann noch die versteckte Mehrfachnennung nötig, um den Matrix-Filter benutzen zu können.


2. Es werden alle gezeigt


Text- und layoutmäßig ist ja alles anpassbar.

Klar, dass alles nur funktionieren kann, wenn die Studie aktiviert ist - sonst hat man ja keine Daten.
Und alles basiert auf der Frage "Quote"; diese wird gezählt.
Wenn Du sie umnennst, müssen auch die Gleichungen angepasst werden.
'[Quote.nb.1]'

File Attachment:

File Name: Termin_plugin.lss
File Size:54 KB


Viel Erfolg
Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 3 years 8 months ago by Joffm.
The following user(s) said Thank You: AileenBalkenhol
The topic has been locked.
  • AileenBalkenhol
  • AileenBalkenhol's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
3 years 8 months ago #203790 by AileenBalkenhol
Vielen Dank für die Antworten und die umfassende Hilfestellung!!! :woohoo:
Es scheint erstmal alles zu funktionieren. Ich werde das nächste Woche mal versuchen nachzuvollziehen und in meine "Umfrage" einzubauen. Wenn ich dabei nicht weiter komme, dürfte ich mich vielleicht nochmal melden?

In jeden Fall vielen, vielen Dank für die tolle Unterstützung! :)

Herzliche Grüße und ein schönes Wochenende
Aileen
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 8 months ago #203792 by Joffm
Noch ein kurzer Zusatz.

Es könnte sein, dass in der "ajax"-Lösung noch eine End-url steht.
Hatte ich zum Testen eingebaut, damit die Studie sich direkt wieder selbst aufruft, und ich weitere Termine vergeben konnte.
Musst Du natürlich entfernen.

Und dass die Basissprache Englisch ist, kommt wohl daher, dass die erste Studie dieser Art einmal auf Englisch gemacht wurde.

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
More
3 years 8 months ago - 3 years 8 months ago #203865 by moehre
Hallo Joffm,

vielen, vielen Dank für die umfassende Antwort, ich bin auch schon lange auf der Suche nach dieser Möglichkeit. :woohoo:

Allerdings funktioniert bei mir die Reproduktion mit einer neuen Umfrage/Fragegruppe/Fragen nicht . Ich habe die "Termin_ajax.lss" geladen und versucht 1-zu-1 nachzubauen (Die php-Datei funktioniert einwandfrei).

Wenn ich die Umfrage ausführe bekomme ich die Antwortmöglichkeitenauswahl der Frage „Quote“ nicht angezeigt, der Fragetext „Bitte, wählen Sie Ihren Termin!“ hingegen wird richtig ausgegeben.

Weiterhin wird der php-Datei für vorgabe:"{eqVorgabe}" irgendwie noch der html-Code mit übergeben bspw.: "<span+id='LEMtailor_Q_274_12'>25,+25,+25,+25</span>".

Gibt es irgendwo noch eine Einstellung, die ich übersehen habe?

Könntest du eventuell nur die Gruppe exportieren und hier zur Verfügung stellen?

Nochmals vielen Dank für die großartige Unterstützung.
Möhre
Last edit: 3 years 8 months ago by moehre.
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 8 months ago #203867 by Joffm
Hallo, moehre,
die Gruppe zu senden ist zuemlich suboptimal.
Wie Du vielleicht hier schon einmal gelesen hast, sind lsq und lsg Exporte sprachsensitiv.
Da die Basissprache meines Beispiels "englisch" ist, müsstest Du also eine Studie mit Basissprache "englisch" erzeugen, damit Du die Gruppe importieren kannst.

Nein, Du solltest Deinen Versuch hier als lss senden.
Nur dann können wir sehen, wo evtl. der "Hase im Pfeffer liegt".

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
More
3 years 8 months ago #203868 by moehre
Hallo,

danke für die schnelle Rückmeldung. :)

Anbei der Nachbau.
The topic has been locked.
Moderators: Joffm

Lime-years ahead

Online-surveys for every purse and purpose