info:limesurvey:scroll_conditions

Limiter le nombre de places OU Afficher une liste déroulante en retirant des valeurs en fonction des réponses déjà fournies

kw: limiter places inscriptions

ls_reservations_limited_places-master.zip

Si vous avez p. ex. des réservations pour des dates, et que vous souhaitez retirer des dates pour lesquelles des réservations ont déjà été effectuées

attention, le script calcule sur les valeurs fournies par la base de données des résultats du formulaire; comme on a souvent des personnes qui s'inscrivent plus d'une fois, il faut régulièrement *vérifier vos données et supprimer les doublons* afin que le calcul soit correct

Faire une page (script php) qui servira de point de départ et dont vous fournirez l'url à vos usagers, p. ex. http://www.monnomdedomaine/inscription 1)

<noscript>
<h1>Vous DEVEZ activer JavaScript!</h1>
</noscript>
<?php
//echo "test pour redirection en fonction du nombre d'inscrits";
$quiz=18924; //changer pour le sid du quiz
var id0 = getUrlVars()["id0"];
if(id0=="javatbd18924X1719X436551013") {
document.getElementById('javatbd18924X1719X436551013').style.display='none';
}
var id1 = getUrlVars()["id1"];
if(id1=="javatbd18924X1719X436551014") {
document.getElementById('javatbd18924X1719X436551014').style.display='none';
}
//...
#connect to database
include("connect.inc.php");
$db=connect_db();
$db_name=db_name();
mysql_select_db($db_name,$db);
$chercheA="
SELECT 18924X1719X43655 AS inscriptions
FROM `lime_survey_" .$quiz ."` ORDER BY 18924X1719X43655 ASC
";
//echo $chercheA;
$chercheA=mysql_query($chercheA);
if(!$chercheA) {
	echo mysql_error(); exit;
}

$i=0; $booked="";
//echo mysql_num_rows($chercheA); exit;
while($i<mysql_num_rows($chercheA)){
	 
	if(mysql_result($chercheA,$i,'inscriptions')=="1013"){
	$booked.="id0=javatbd18924X1719X436551013&";
	}
		if(mysql_result($chercheA,$i,'inscriptions')=="1014"){
	$booked.="id1=javatbd18924X1719X436551014&";
	}
	//...
$i++;
}

$link="http://radeff.red/limesurvey/index.php?sid=18924&".$booked;
?>
<meta http-equiv="refresh" content="0;URL=<? echo $link; ?>">

Dans limesurvey ensuite:

Editer d'abord le code-source du premier groupe et ajouter:

<script type="text/javascript" charset="utf-8">
// Read a page's GET URL variables and return them as an associative array.
function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}
</script>

Editer enfin le code-source de la question sur laquelle on veut porter la condition

<script type="text/javascript" charset="utf-8">
var id0 = getUrlVars()["id0"];
if(id0=="javatbd18924X1719X436551013") {
document.getElementById('javatbd18924X1719X436551013').style.display='none';
}
var id1 = getUrlVars()["id1"];
if(id1=="javatbd18924X1719X436551014") {
document.getElementById('javatbd18924X1719X436551014').style.display='none';
}
/* ... */
</script>

Si vous entrez des valeurs, elles seront automatiquement “cachées” par ce script

Le plus simple… On fait une 1e question de type “multiple”; pour la question suivante, de type array, on met dans les options avancées sous “Logic” le code de la question précédente dans le champ “array filter”

Source: vidéo officielle limesurvey sur https://www.youtube.com/watch?v=7134QebOQzY


1)
adresse fictive
  • info/limesurvey/scroll_conditions.txt
  • Dernière modification : 2020/10/26 08:06
  • de radeff