count(*) di una domanda da database

More
4 years 9 months ago #82306 by vonvuviz
Buongiorno a tutti.
Avrei una domanda che riguarda il conteggio di una certa risposta sul db dei dati salvati. Mi spiego meglio:
Ho un questionario in cui c'è una domanda che mi fa da filtro e voglio un controllo che
mi vada a vedere se sono gia state inserire un tot fissato di risposte, e in caso affrmativo non mi faccia visualizzare le domande successsive.
Ad esempio se chiedo il colore degli occhi e vorrei che ci fossero al massimo 30 blu e 40 castani, ho bisogno di vedere quante risposte ci sono state di occhi blu e occhi castani.
Se un utente mi dice che ha gli occhi blu e gia in 30 hanno scelto l'opzione "occhi blu", non deve visualizzare le domande successive.

Qualcuno mi sa dire se è possibile e se si come si potrebbe fare?
Grazie mille.

Please Log in to join the conversation.

More
4 years 9 months ago #82315 by lfanfoni
Non l'ho mai provato, ma credo che puoi usare le "Quote":
docs.limesurvey.org/quotas&structure=Eng...tions+for+LimeSurvey
Forse combinando a una domanda di tipo Equation.
Facci sapere.

Please Log in to join the conversation.

More
4 years 9 months ago - 4 years 9 months ago #82324 by vonvuviz
Si ci avevo provato ma alla fine la sezione per le quote funziona solo se la domanda è di tipo:

Gender
Multiple Choice
Array - 5 Point Choice
Array - 10 Point Choice
Language Switch
Yes/No
List (Radio)
List (Dropdown)
List with comments

Ho pensato a due modi per risolvere la questione, visto che non c'è un modo diretto:
1) Passargli i valori del count(*) da url e poi via javascipt fare i controlli del caso
2) Creare una variabile dummy, e settarla in modo opportuno in modo che posso usare le quote (es se colore degli occhi è blu, la variabile dummy di tipo Array - "5 Point Choice" vale 1, se castani 2. Alla fine metto le quote su questa variabile qua).
La seconda mi pare un pò migliore rispetto alla prima.
Faccio un pò di prove e vedo qual'è la soluzione che genera meno problemi.
Last Edit: 4 years 9 months ago by vonvuviz.

Please Log in to join the conversation.

More
4 years 9 months ago #82330 by lfanfoni
La seconda soluzione forse è possibile con la 1.92. come variabile "dummy" puoi usare una domanda a scelta semplice (che puoi anche nascondere), pero questa domanda puo' essere settata in base alle scelte precedenti usando i "default value". E come default value dovrai usare una espressione/equazione del nuovo EM (puoi anche usare l'iif in linea).
Non so pero' se nel default value puoi mettere una equazione.
Se fai come l'altra volta che posti la soluzione trovata, avrai la mia gratitudine...(anche quella di altri, suppongo)

Please Log in to join the conversation.

More
4 years 9 months ago #82334 by vonvuviz
Ho trovato una soluzione non molto elegante ma efficace.
Intanto un preambolo sul questionario:
Nel mio caso specifico ho 4 quote da rispettare e queste vengono calcolate con variabili che non vengono sempre chieste e sono in pagine separate.
Il questionario, dopo le prime domande si divide in 2 tronconi per ricongiungersi ad un certo punto (quando si ricongiungono ho tutte le informazioni per sapere a quale delle 4 quote appartiene).

Quindi ho creato un gruppo "quota" dove ho inserito la variabile dummy di tipo "multi choice" con i 4 valori.
Con javascript ho tirato su i valori dalla session delle variabili che mi servivano, trasformandoli prima in stringa e poi in numero (operazione necessaria in quanto le variabili che non si chiedono hanno un valore nullo e se non si fa cosi il javascript sballina!)

Sulla domanda ho nascosto solo la parte della choice e ho messo un'intestazione fasulla del tipo:

"La fase di screening è terminata. Prema avanti per continuare il questionario."


Di seguito lo scriptino (non so se può servire però magari serve :P ):


<script>
tmp = "{INSERTANS:SSSSXGGXQQ1}" ;

spec1 = "INSERTANS:SSSSXGGXQQ2" ;
spec2 = "{INSERTANS:SSSSXGGXQQ3}" ;
spec3 = "{INSERTANS:SSSSXGGXQQ4}";
spec4 = "{INSERTANS:SSSSXGGXQQ5}";

if (spec1="") {
spec1 = 0;
}

if (spec2 = "") {
spec2 = 1;
}

if (spec3 = "") {
spec3 = 1;
}

if (spec4 = "") {
spec4 = 1;
}


if(tmp == "<VALORE DELLA VARIABILE>"){
check = ( ( spec3 * 100 ) / spec4 )
if(check < 20){
document.getElementById("answer54464X12X110A1").checked=true;
} else{
document.getElementById("answer54464X12X110A2").checked=true;
}
} else{
check = ( ( spec1 * 100 ) / spec2 )
if(check < 25){
document.getElementById("answer54464X12X110A3").checked=true;
} else{
document.getElementById("answer54464X12X110A4").checked=true;
}
}
</script>

Please Log in to join the conversation.

More
4 years 9 months ago #82466 by lfanfoni
Beh: direi una soluzione perfetta, pero' mi è rimasto il tarlo della "default value": avresti potuto definire una o più domande a scelta semplice, mettendo una espressione nei "default answer values"?
Appena ho un attimo ci voglio provare...
grazie comunque per l'ottima soluzione

Please Log in to join the conversation.