Skip to content
Extraits de code Groupes Projets
Valider 92d614d1 rédigé par Maïeul's avatar Maïeul
Parcourir les fichiers

Modification d'une réponse : avant d'enregistrer les nouveaux résultat,

effacer TOUT les anciens résultats, et pas uniquement pour les champs
qui viennent d'être postés.
En effet, les nouvelles valeurs peuvent conditionner le non-affichage
d'un champ pour laquelle une valeur avait été enregistrée avant. Dans ce
cas il faut aussi effacer cette valeur.
Exemple
- Le formulaire est configuré de sorte que si la case_1 est cochée, alors afficher le champ input_1.
- Premier enregistrement de la réponse : case_1 cochée, champ input_1
valant 'toto'
- Modification de la réponse : case_1 décochée.
  - Avant ce commit, la valeur 'toto' restait associée à case_1 en base,
  faussant tableau d'analyse et autre
  - après ce commit, ce n'est plus le cas
parent d0177528
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
<paquet
prefix="formidable"
categorie="communication"
version="4.0.2"
version="4.0.3"
etat="stable"
compatibilite="[3.1.0;3.2.*]"
logo="images/formidable-64.png"
......
......@@ -127,12 +127,14 @@ function traiter_enregistrement_dist($args, $retours) {
}
// S'il y a bien des choses à modifier
if ($champs) {
// On supprime d'abord les champs
// On supprime d'abord TOUT les champs, y compris ceux qui ne viennent pas d'être envoyé.
// En effet, ils pouvaient y avoir des champs remplis lors du précédent enregistrement
// Qui ne le sont plus au nouvel enregistrement, car la condition d'affichage (afficher_si) n'est plus remplie
// Dans ce cas il ne faut pas qu'ils continuent à être stockés en base, car cela peut fausser les affichages divers (type tableaux et autres)
sql_delete(
'spip_formulaires_reponses_champs',
array(
'id_formulaires_reponse = '.$id_formulaires_reponse,
sql_in('nom', $champs)
'id_formulaires_reponse = '.$id_formulaires_reponse
)
);
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter