Changeset 120897 in spip-zone


Ignore:
Timestamp:
Jan 30, 2020, 8:34:58 PM (13 months ago)
Author:
Maïeul Rouquette
Message:

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
Location:
_plugins_/formidable/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/formidable/trunk

    • Property subgit:lock:d0177528facfd66d20f674dcabc7e1f8e53885c7 deleted
    • Property subgit:lock:92d614d16803ae8705191379b4ec33a87e3101cb set to 2020-01-30T21:39:10.096
  • _plugins_/formidable/trunk/paquet.xml

    r120895 r120897  
    22        prefix="formidable"
    33        categorie="communication"
    4         version="4.0.2"
     4        version="4.0.3"
    55        etat="stable"
    66        compatibilite="[3.1.0;3.2.*]"
  • _plugins_/formidable/trunk/traiter/enregistrement.php

    r120896 r120897  
    128128                // S'il y a bien des choses à modifier
    129129                if ($champs) {
    130                         // On supprime d'abord les champs
     130                        // On supprime d'abord TOUT les champs, y compris ceux qui ne viennent pas d'être envoyé.
     131                        // En effet, ils pouvaient y avoir des champs remplis lors du précédent enregistrement
     132                        // Qui ne le sont plus au nouvel enregistrement, car la condition d'affichage (afficher_si) n'est plus remplie
     133                        // 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)
    131134                        sql_delete(
    132135                                'spip_formulaires_reponses_champs',
    133136                                array(
    134                                         'id_formulaires_reponse = '.$id_formulaires_reponse,
    135                                         sql_in('nom', $champs)
     137                                        'id_formulaires_reponse = '.$id_formulaires_reponse
    136138                                )
    137139                        );
Note: See TracChangeset for help on using the changeset viewer.