Bonjour,
Mon site propose de s'inscrire à des formations. Chaque formation a plusieurs sessions.
J'ajoute un session de formation via un formulaire en front-end. Ce formulaire exige, entre autre, une date de début (champ date_debut_formation) et une date de fin (champ date_fin_formation).
Les utilisateurs peuvent s'inscrire à une session de formation via un formulaire d'inscription. Ce formulaire affiche toutes les sessions liées à une formation par le biais d'un champ Select Dynamic inscription_date_formation. L'utilisation doit donc sélectionner une session de formation dans une liste déroulante :
SELECT CONCAT( k.titre_module_formation, " - ", p.tarif_formation, " - ", p.duree_formation, " - ", DATE_FORMAT(k.date_debut_formation,"%d %M %Y"), " - ", DATE_FORMAT(k.date_fin_formation,"%d %M %Y") ) AS text, k.id AS value
FROM #__cck_core AS a
LEFT JOIN #__content AS s ON s.id = a.pk
LEFT JOIN #__cck_store_form_formation AS p ON p.id = a.pk
LEFT JOIN #__cck_store_item_content AS c ON c.id_parent = p.id
LEFT JOIN #__cck_store_form_ajouter_une_date_de_formation AS k ON k.id = c.id
WHERE c.id_parent = "#id#"
AND k.date_debut_formation >= CURDATE()
ORDER BY k.date_debut_formation ASC
Après soumission du formulaire d'inscription, j'affiche les informations de la session de formation dans un mail de notification pour l'adminitration à l'aide d'un champ Before Render :
$id_session = $fields['inscription_date_formation']->value;
if ( $id_session != '' ) {
$query = 'SELECT CONCAT( k.titre_module_formation, " - ", p.tarif_formation, " - ", p.duree_formation, " - ", DATE_FORMAT(k.date_debut_formation,"%d %M %Y"), " / ", DATE_FORMAT(k.date_fin_formation,"%d %M %Y") ) AS text, k.id AS value
FROM #__cck_core AS a
LEFT JOIN #__content AS s ON s.id = a.pk
LEFT JOIN #__cck_store_form_formation AS p ON p.id = a.pk
LEFT JOIN #__cck_store_item_content AS c ON c.id_parent = p.id
LEFT JOIN #__cck_store_form_ajouter_une_date_de_formation AS k ON k.id = c.id
WHERE k.id = "'.$id_session.'"';
$text = JCckDatabase::loadResult( $query );
$fields['#inscription_date_formation#']->value = $text;
}
Cependant,certaines formations ne nécessitent qu'une seule date (= date de début).
J'ai donc ajusté la requête SQL du select dynamic (formulaire d'inscription) afin de pouvoir afficher les sessions de formation n'ayant qu'une seule date dans le formulaire d'inscription :
SELECT CONCAT( k.titre_module_formation, " - ", DATE_FORMAT(k.date_debut_formation,"%d %M %Y"), " - ", IFNULL(DATE_FORMAT(k.date_fin_formation,"%d %M %Y"),''), " - ", k.lieu_formation ) AS text, k.id AS value
FROM #__cck_core AS a
LEFT JOIN #__content AS s ON s.id = a.pk
LEFT JOIN #__cck_store_form_formation AS p ON p.id = a.pk
LEFT JOIN #__cck_store_item_content AS c ON c.id_parent = p.id
LEFT JOIN #__cck_store_form_ajouter_une_date_de_formation AS k ON k.id = c.id
WHERE c.id_parent = "#id#"
AND k.date_debut_formation >= CURDATE()
ORDER BY k.date_debut_formation ASC
=> La liste déroulante/select dynamic affiche bien les sessions de formation n'ayant qu'une seule date.
Le problème est que le champ inscription_date_formation demeure vide dans la notification mail => A noter que lorsque les 2 dates sont remplies, le champ inscription_date_formation est correctement rempli.
Quel(s) ajustement(s) dois-je faire afin de récupérer la valeur du select dynamic dans la notification mail lorsque qu'une seule date est remplie ? La requête du select dynamic est-elle correcte (Ifnull) ?
Cordialement.