Contexte:

Utiliser RSform pour créer un formulaire d'inscription à un événement dont les places disponibles sont de 20 personnes maximum.

 

Les données RSForm:

les dates de l'événement sont représentées par des champs radio identifiés "dateinfo"

La solution:

Récupérer les différentes dates de l'événement

Pour chaque date, vérifier le nombre d'inscription

Si le nombre d'inscription est supérieur ou égal au nombre de places disponibles

On change l'affichage du bouton radio pour cette date

 

Le code:

$max = 20; // le nombre maximum d'inscription par séance d'info
$dates = array();
//on retrouve le champ dateinfo pour retrouver toutes les dates proposées
foreach($fields as $i=>$field){
if($field->name=='dateinfo'){
$valTitle = explode('|',$field->default_value);
$dates[] = $valTitle[0];
}
}
//pour chaque date trouvée on recherche les inscriptions pour cette date
foreach($dates as $dateinfo){
$database->setQuery("SELECT count(*) as subscript FROM jos_forme_data where form_id=3 and params like '%dateinfo=".$dateinfo."%' group by form_id");

$values = $database->loadObjectList();
$subscript = $values[0]->subscript;
//echo "<br />".$subscript;
if($subscript>=$max){
// si on dépasse (plus grand ou =) le max d'inscription, on désactive le champ et on ajoute le texte "complet"
foreach($fields as $i=>$field){
if($field->name=='dateinfo'){
$valTitle = explode('|',$field->default_value);
if($valTitle[0]=='26/02'){
$field->params="disabled";
$field->default_value = $field->default_value ."(complet)";
}

//    echo $field->id .' '. $field->default_value . "<br>";    
}
}

}
}

Les dernières réalisations

Les infos du blog