Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Problème de calcul avec la fonction countifop

  • riqcles
  • riqcles's Avatar Topic Author
  • Offline
  • Elite Member
  • Elite Member
More
3 years 2 weeks ago #214668 by riqcles
Bonjour à tous,
un de mes utilisateurs de LimeSurvey m'a indiqué qu'il avait des problèmes avec cette fonction lors d'un calcul.
J'ai regardé son code qui est bien réalisé et je ne trouve pas le blocage.

J'ai attaché le questionnaire pour votre analyse.

Les tests qui ont été fait :
saisie d'une valeur négative : message d'alerte apparait --> OK
saisie des bonnes valeurs pour le calcul : pas de message d'alerte --> OK
Validation du questionnaire : pop up de valeur non correcte.

Bien sur, si on enlève le contrôle, cela fonctionne, mais ce n'est pas le but.

J'ai activé le questionnaire --> pareil (on ne sait jamais)
J'ai essayé sur la V4 de démo du site de LimeSurvey : pareil (ce qui exclu ma version de LimeSurvey, qui est une V3.22)

Donc, je donne ma langue au citron... :)

Si vous avez des pistes, je prends.
Si c'est une anomalie, je poste le bug.

J'espère que si une correction est possible, que je puisse appliquer le code corrigé pour la version V3.X

Une migration en V4 n'est pas encore à l'ordre du jour.
 

LimeSurvey version 3.22.19
OS : CentOS 7.9 / PHP 7.2.4
BDD : PostGresql 11.x /

Future LimeSurvey version 6.4.1
OS : CentOS 7.9 / RockyLinux / PHP 8.2
BDD : PostGresql 15.x
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 2 weeks ago #214669 by Joffm
C'était ça?
{countifop('lt', 0, that.LISTES.sq_VOIX.NAOK)}

Les nombres négatifs sont interdits; donc le résultat est toujours "0"

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 2 weeks ago #214672 by Joffm

C'était ça?
{countifop('lt', 0, that.LISTES.sq_VOIX.NAOK)}

J'ai compris.

Mais je ne vois aucun défaut
 

 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: riqcles
The topic has been locked.
  • riqcles
  • riqcles's Avatar Topic Author
  • Offline
  • Elite Member
  • Elite Member
More
3 years 2 weeks ago #214678 by riqcles
Oui, on c'est bien cette fonction. Mais c'est lors de l'appui sur le bouton envoyer que cela ne passe pas.

Je pense que le javascript de validation doit poser problème (source de la question LISTES).

Je vais regarder ce point.

LimeSurvey version 3.22.19
OS : CentOS 7.9 / PHP 7.2.4
BDD : PostGresql 11.x /

Future LimeSurvey version 6.4.1
OS : CentOS 7.9 / RockyLinux / PHP 8.2
BDD : PostGresql 15.x
The topic has been locked.
  • riqcles
  • riqcles's Avatar Topic Author
  • Offline
  • Elite Member
  • Elite Member
More
3 years 2 weeks ago #214679 by riqcles
Oups ! je voulais dire la validation de la question :
Équation de validation de question: {(!is_empty(self.sq_SQ01_NOM)) and (!is_empty(self.sq_SQ01_AFFILIATION)) and (!is_empty(self.sq_SQ01_VOIX)) and (!is_empty(self.sq_SQ01_SIEGES)) AND (countifop('lt', 0, self.sq_SIEGES.NAOK) == 0) and (countifop('lt', 0, self.sq_VOIX.NAOK) == 0) }

LimeSurvey version 3.22.19
OS : CentOS 7.9 / PHP 7.2.4
BDD : PostGresql 11.x /

Future LimeSurvey version 6.4.1
OS : CentOS 7.9 / RockyLinux / PHP 8.2
BDD : PostGresql 15.x
The topic has been locked.
  • riqcles
  • riqcles's Avatar Topic Author
  • Offline
  • Elite Member
  • Elite Member
More
3 years 2 weeks ago #214681 by riqcles
Bon, pas trouvé

LimeSurvey version 3.22.19
OS : CentOS 7.9 / PHP 7.2.4
BDD : PostGresql 11.x /

Future LimeSurvey version 6.4.1
OS : CentOS 7.9 / RockyLinux / PHP 8.2
BDD : PostGresql 15.x
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 2 weeks ago #214712 by DenisChenu
Replied by DenisChenu on topic Problème de calcul avec la fonction countifop
J'ai même essayé avec des tests sur l'inverse …

Le problème est sans aucun doute lié aux différences de comparaison entre NULL, false, "" et 0 .

A par faire les tests ligne à ligne …
je vois pas trop …

Tu peux remonter le bogue mais je ne suis même pas sur de comment le gérer.

fermé pour "non corrigeable"
bugs.limesurvey.org/view.php?id=15501

fermé avec "ajout d'alerte"
bugs.limesurvey.org/view.php?id=15405

Ouvert en shaipa
bugs.limesurvey.org/view.php?id=14817
 

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 2 weeks ago #214731 by DenisChenu
Replied by DenisChenu on topic Problème de calcul avec la fonction countifop
Je viens de tester

Même :
'''countifop('lt', 0, that.LISTES.sq_VOIX.NAOK) : {countifop('lt', 0, that.LISTES.sq_VOIX.NAOK)} donne 2 valeurs différentes.
Les valeurs masquée (NULL) remone vrai en PHP.

Je penche pour un problème PHP ici plutôt que JS

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 2 weeks ago #214733 by DenisChenu
Replied by DenisChenu on topic Problème de calcul avec la fonction countifop
Oui …

Javascript '' < 0 remonte toujours FALSE, mais comme toute comparaison entre un nbre et une valeur qui ne peut être uin nombre

github.com/LimeSurvey/LimeSurvey/blob/7a...core_helper.php#L430
github.com/LimeSurvey/LimeSurvey/blob/7a...core_helper.php#L446

C'est à dire que les test en JS de
"" < 0
"" <= 0
"" > 0
"" >= 0

remonte toujours faux.

Tu peux remonter …
Mais le correctifs est difficile

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The following user(s) said Thank You: riqcles
The topic has been locked.
  • riqcles
  • riqcles's Avatar Topic Author
  • Offline
  • Elite Member
  • Elite Member
More
3 years 2 weeks ago #214745 by riqcles
Ah oui...pas évident.
Donc cette anomalie va nous suivre pendant plusieurs versions ?
actuellement en V3 et V4 ....

On va essayer de trouver un moyen de contournement.
Mais une correction aurai été mieux pour tout le monde.
Merci à vous tous d'avoir essayé de trouver une solution ;)

LimeSurvey version 3.22.19
OS : CentOS 7.9 / PHP 7.2.4
BDD : PostGresql 11.x /

Future LimeSurvey version 6.4.1
OS : CentOS 7.9 / RockyLinux / PHP 8.2
BDD : PostGresql 15.x
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 2 weeks ago #214754 by DenisChenu
Replied by DenisChenu on topic Problème de calcul avec la fonction countifop
la seule solution que je vois
Code:
{(!LISTES_SQ01_VOIX.relevanceStatus OR LISTES_SQ01_VOIX.NAOK ge 0)
AND
(!LISTES_SQ02_VOIX.relevanceStatus OR LISTES_SQ02_VOIX.NAOK ge 0)
AND
…
}
Et encore : cela fonctionne parce-que tu force la réponse.

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The topic has been locked.
Moderators: Nickko

Lime-years ahead

Online-surveys for every purse and purpose