Bonjour,
je souhaite changer la couleur d'une cellule si la colonne est vide mais le fais d'avoir la valeur par défaut null elle est considérée comme pleine.
je vois pas comment y remédier.Code:if (!empty($donnees['COL 18']))
merci
Version imprimable
Bonjour,
je souhaite changer la couleur d'une cellule si la colonne est vide mais le fais d'avoir la valeur par défaut null elle est considérée comme pleine.
je vois pas comment y remédier.Code:if (!empty($donnees['COL 18']))
merci
Simple erreur de logique:Tu peux être plus explicite avecCode:if (empty($donnees['COL 18']))
ou encoreCode:if ($donnees['COL 18'] === null)
Si ça ne résout pas le problème, fait un var_dump de $donnees['COL 18'] et poste le.Code:if (is_null($donnees['COL 18']))
(Pas très parlant comme nom de colonne "COL 18".)
il ne faut pas confondre "null" et chaîne de caractères vide.
Null n'est pas une valeur, mais un marqueur d'absence de valeur.
Null est applicable sur tout type de colonnes (caractère, numérique, date...) à l'exception de celles ayant une contrainte "not null", par exemple les PK.
Null est à prendre en compte dans les tables de décision avec les opérateurs AND, OR et NOT.
Comme null est une absence de valeur, on ne peut pas écrire IF MA_COLONNE = null, car null n'est égal à rien, pas même à null ! On écrira donc IF MA_COLONNE is null.
Vide n'a de sens que pour les types chaînes de caractères.
IF MA_COLONNE = '' est une expression valide puisque vide est une valeur.
Attention toutefois : Oracle confond allègrement "null" et vide, au mépris des normes SQL et de toute logique :aie: !
Le null PHP n'a pas la même signification qu'en SQL et suit une logique classique.
En PHP (null === null) => true
Et pour compliquer un peu plus les choses le NULL SQL sera traité différemment selon les options PDO/PHP suivantes :
PDO::ATTR_ORACLE_NULLS
PDO::NULL_NATURAL
PDO::NULL_EMPTY_STRING
PDO::NULL_TO_STRING
Voir la doc => https://www.php.net/manual/en/pdo.setattribute.php
Oui il faut bien distinguer le NULL SQL et sa gestion dans les différents langages, et aussi savoir que Oracle fait exception, puisqu'il confond null et chaîne vide :aie:
Concernant la différence entre NULL et VIDE, la question étant récurrente, j'ai créé un billet de blog sur ce sujet.
Voir ICI
empty() de PHP est un faux-ami. Il teste d'abord si une variable n'est pas définie ce qui revient à la comparer (strictement) à null en PHP. Dans un deuxième temps seulement, si la comparaison précédente a renvoyé false, empty() testera si la valeur est équivalente à false au sens de PHP et de manière faiblement typée. Par exemple la chaîne "0" sera considérée comme false (oui ça parait fou), de même que la chaîne vide, le booléen false, l'entier 0.
Perso je n'utilise jamais empty() pour les raisons que tu énonces
Exception => Vérifier si un tableau est vide (facilite la relecture)