Span invisible si variable null

Par edesign, il y a 8 ans


Bonjour,

Je sollicite votre aide car je cherche desesperement une solution pour ne pas afficher une class SPAN si ma variable est vide.

<span class="ma_class"> <?php if(empty( $variable )) {echo '';} else {echo esc_attr ( $variable['availability_date']);} ?> </span>

Ce que je veux

Le code que j'aimerai : si ma variable est vide, mon span ne s'affiche pas et la variable non plus ...

Ce que j'obtiens

Avec mon code actuel : si ma variable est vide, mon span s'affiche et pas la variable ...

Merci pour votre aide ! :)

16 réponses

Carouge10, il y a 8 ans

Bonsoir,
Il faut tout simplement de mettre ton span dans la condition

<?php if(!empty( $variable )){ ?> <span class="ma_class"> <?= esc_attr ( $variable['availability_date']); ?> </span> <?php }
Carouge10, il y a 8 ans

J'ai du mal à suivre.
Pourquoi vouloir absolument faire un "esc_attr" si la variable n'est pas vide et l'afficher si elle l'est ?

edesign, il y a 8 ans

Merci pour ta réponse,

Mais je n'arrive pas à l'appliquer dans mon cas :

En fait, je veux dire :

Si $variable est vide
Ne rien afficher, ni span, ni variable,
Sinon
Afficher le span et la variable dedans.

J'ai essayé de bricoler grâce à ton code, mais je n'y arrive pas j'ai des erreurs :(

<?php if(!empty( $variable )){ ?> <span class="maclass"> <?= esc_attr (''); else {esc_attr ($variable['availability_date']);} ?> </span> <?php } ?>
Carouge10, il y a 8 ans

Attention j'ai modifier ton code en y ajoutant un "!" qui à pour signication l'inverse de ce qu'on veux.
Donc dans ton cas là, tu as modifié de façon a avoir un affichage si la variable est vide et de plus, il manque des accolade au if.

Qu'est ce tu as comme erreurs en mettant mon code ?

Carouge10, il y a 8 ans

Si je comprends bien, dans tous les cas, il te faut faire un "esc_attr()" ?

edesign, il y a 8 ans

Ou plutôt un truc dans le genre, mais là aussi j'ai une erreur :)

<?php if(!empty( $variable )){ ?> <span class="maclass" style="display:none"> <?= esc_attr (''); ?> </span> <?php else{ <span class="maclass"> <?= esc_attr ($variable['availability_date']); ?> </span> <?php } ?>
edesign, il y a 8 ans

Avec un echo simple ca fonctionne aussi, je viens de tester :

<?php echo ($variable['availability_date']);?>
Carouge10, il y a 8 ans

Si je reprends ton code avec correction de syntaxe :

<?php // Si $variable n'est pas vide alors ..... if( !empty($variable) ){ ?> <span class="maclass" style="display:none"> <?= esc_attr (''); ?> </span> <?php // Sinon c'est qu'elle est vide alors.... } else { ?> <span class="maclass"> <?= esc_attr ($variable['availability_date']); ?> </span> <?php } ?>

Est-ce bien ce que tu veux ?

edesign, il y a 8 ans

Oui c'est bien cela, mais non toujours pas. Les span avec variable vide prennent en compte le style sans le display:none.
J'ai donc mon span avec variable qui fonctionne et les autres qui s'affichent sans variables à l'interieur :/
Comprend pas le code me semble juste

edesign, il y a 8 ans

J'ai essayé avec 2 class différente chargé en externe, c'est la même

keulu, il y a 8 ans

et pourquoi pas :

<?php <span class="maclass" <?php echo empty($variable) ? '' : 'style="display:none"'; ?>> <?php if (!empty($variable)) : ?> <?php echo esc_attr ($variable['availability_date']); ?> <?php endif ?> </span> ?>
edesign, il y a 8 ans

Alors ça marche, mais c'est completement tordu cette histoire :
en fait, ça fais l'inverse ... en inversant les 2 classes et en mettant !empty($variable['availability_date'] ça fonctionne, je comprend pas pourquoi mais c'est cool :)

<?php // Si $variable n'est pas vide alors ..... if( !empty($variable['availability_date']) ){ ?> <span class="class_origine"> <?= esc_attr ($variable['availability_date']); ?> </span> <?php // Sinon c'est qu'elle est vide alors.... } else { ?> <span class="class_none"> <?= esc_attr ($variable['availability_date']); ?> </span> <?php } ?>
edesign, il y a 8 ans

En tout cas, merci beaucoup pour ton aide !!! :)

SLK, il y a 8 ans

Salut,

@Keulu,
ah ben non, lui il veut afficher la span seulement si la variable n'est pas vide, alors qu'avec ton code on l'affiche systématiquement.

c'est completement tordu cette histoire :
en fait, ça fais l'inverse ...

C'est parce qu'il y a juste une petite erreur d'innatention dans le dernier code de Carouge10, regarde ce qu'on a marqué :

SI la variable n'est pas vide ALORS
on affiche rien,
SINON (la variable est vide)
on affiche la variable

C'est évidemment l'inverse qu'on voulait.

Et dans ton dernier code,
tu as mis une classe_none quand la variable est vide (OK),
mais tu essaies quand même d'utiliser cette variable vide,
ce n'est pas bon.

Du coup plutôt comme ça alors :

<?php // Si $variable n'est pas vide alors ..... if( !empty($variable['availability_date']) ){ ?> <span class="class_origine"> <?= esc_attr ($variable['availability_date']); ?> </span> <?php // Sinon c'est qu'elle est vide alors.... } else { ?> <span class="class_none"> <!-- la seule différence c'est que j'ai supprimé la ligne qu'il y avait ici --> </span> <?php } ?>

Et le code est vraiment "lourd",
en fait tu fais juste ça :

<?php if (empty($variable['availability_date'])) echo '<span class="class_none"></span>'; else echo '<span class="class_origine">' . esc_attr($variable['availability_date']) . '</span>'; ?>

Et, tu as vraiment besoin d'afficher une span en "class_none" pour le design de ton site ?
Sinon, juste ça suffirait :

<?php if (!empty($variable['availability_date'])) echo '<span class="class_origine">' . esc_attr($variable['availability_date']) . '</span>'; ?>

Fais bien attention au ! devant le empty, dès fois il y est, dès fois non.

edesign, il y a 8 ans

Bonjour SLK,

Effectivement je viens de tester le dernier code que tu as posté, et ça marche à merveille !! ^^

Merci beaucoup.

Lartak, il y a 8 ans

Bonjour.
Dans ce cas là, marques ton sujet comme résolu.