test if else un peu complexe

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Problème] test if else un peu complexe

    Bonjour
    J'ai besoin de faire un test pour afficher un titre sur la page https://clibre.eu/infos-sur-le-libre...tes-le-produit

    1/ Pour cela j'ai fais une surcharge pour différents type de contenu.
    je souhaite TOUJOURS afficher "Caractéristique" SAUF SI
    ( (le champ personnalisé contient une valeur $this->item->jcfields[2]->value)=="typ-info_vid") ET (tout les champs suivants qui sont vides)

    J'ai fais pas mail d'essai sans succès. je suis maintenant en surchauffe; Voici le dernier essai
    Code PHP:
    <?php if ( ( ($this->item->jcfields[2]->value)=="typ-info_vid") AND !( (empty($this->item->jcfields[3]->value)) AND (empty($this->item->jcfields[21]->value)) AND (empty($this->item->jcfields[9]->value)) ) )
    { echo 
    "<h3><span><i class='fa fa-list fa-1x' aria-hidden='true'></i></span> Caractéristiques</h3>" ;} ?>
    mais déjà le test sur le btn radio: ($this->item->jcfields[2]->value)=="typ-info_vid") na pas l'air de fonctionner


    2/ vérification
    Cela fonctionne mais je me demande si on ne peut pas simplifier celà ?

    Code PHP:
    <?php if (!empty($this->item->jcfields[3]->value)): ; ?>
    <?php 
    echo "<br />" .$this->item->jcfields[3]->label .': ' .$this->item->jcfields[3]->value;/*type license,case*/ ?>
    <?php 
    endif; ?>
    <?php 
    if (!empty($this->item->jcfields[21]->value)): ; ?>
    <?php 
    echo "<br />" .$this->item->jcfields[21]->label .': ' .$this->item->jcfields[21]->value?>
    <?php 
    endif; ?>
    Faciliter l'adoption du meilleur du Libre auprès du grand public https://clibre.eu/ - Connaissez-vous des communicants ... pour promouvoir joomla ? https://forum.joomla.fr/forum/th%C3%...mouvoir-joomla

  • #2
    Hello,

    Ton 1er IF semble ok.
    j'aurais juste enlever les parenthèses autour du 1er ($this->item->jcfields[2]->value)==...

    Code PHP:
    <?php if ( ($this->item->jcfields[2]->value=="typ-info_vid") AND ...

    Pour donner ca :

    Code PHP:
    <?php if (
            (
    $this->item->jcfields[2]->value=="typ-info_vid") AND
            !(
                (empty(
    $this->item->jcfields[3]->value)) AND
                (empty(
    $this->item->jcfields[21]->value)) AND
                (empty(
    $this->item->jcfields[9]->value))
            )
        ) : 
    ?>
    <h3><span><i class='fa fa-list fa-1x' aria-hidden='true'></i></span> Caractéristiques</h3>
    <?php endif; ?>

    As-tu fais un "echo" de $this->item->jcfields[2]->value ? il affiche bien typ-info_vid ?
    Garstud Workshop - Concepteur, Développeur et Formateur Joomla - http://www.garstud.com
    « Ce n’est pas parce que les choses sont difficiles que nous n’osons pas,
    c’est parce que nous n’osons pas qu’elles sont difficiles. »
    - Sénèque

    Commentaire


    • #3
      salut
      Et merci de m'avoir éclairé sur l'erreur basique que j'ai vu en faisant l'écho. Il ne fallait pas faire le test sur la value mais rawvalue

      Code PHP:
      <?php if (
      (
      $this->item->jcfields[2]->rawvalue=="typ-info_vid") AND
      (
      (empty(
      $this->item->jcfields[3]->value)) AND
      (empty(
      $this->item->jcfields[21]->value)) AND
      (empty(
      $this->item->jcfields[9]->value))
      )
      ) : 
      ?>
      <h3><span><i class='fa fa-list fa-1x' aria-hidden='true'></i></span> Non</h3>
      <?php else : ?>
      <h3><span><i class='fa fa-list fa-1x' aria-hidden='true'></i></span> Caractéristiques</h3>
      <?php endif; ?>

      Après j'ai beau me triturer les neurones, je n'ai pas pu faire plus court que ce code qui est la syntaxe plus longue mais plus logique pour moi.
      Je n'arrive pas à inverser dans produire des erreurs dans l'affichage. Bon pour l'instant j'enlève le "Non" mais je ne sais pas si je vais avoir le temps d'ici demain d'y revenir.

      Il y a qq chose qui titille mon esprit un peu exigeant, c'est qu'il y a parfois des lignes vides en dessous du titre "Caractéristiques" (https://clibre.eu/ressources-libre-e...libre-de-droit) à cause de la valeur vide même avec mon code 2/ dont je me demandais aussi s'il était correct ?

      Dernière édition par herve à 20/10/2022, 08h38
      garstud aime ceci.
      Faciliter l'adoption du meilleur du Libre auprès du grand public https://clibre.eu/ - Connaissez-vous des communicants ... pour promouvoir joomla ? https://forum.joomla.fr/forum/th%C3%...mouvoir-joomla

      Commentaire


      • #4
        Hello,
        Ah oui ! bien vu ! Les champs personnalisés proposent les propriétés value et rawvalue ! ... et elles ne sont pas toujours identiques, donc faut faire attention

        Concernant ton espace apres le titre H3, je ne vois qu'un <br > en trop ... qui n'est pas necessaire (voir, de trop) après un </h3> !
        Garstud Workshop - Concepteur, Développeur et Formateur Joomla - http://www.garstud.com
        « Ce n’est pas parce que les choses sont difficiles que nous n’osons pas,
        c’est parce que nous n’osons pas qu’elles sont difficiles. »
        - Sénèque

        Commentaire


        • #5
          Bonjour
          1/ c'était le problème principal et c'est réglé même si cela me fait étrange de passer par le "else", sans trouver à trouver l'inverse du test

          2/ je comprends que le <br> n'est pas sa place ici, mais il faut comprendre que j'ai une seule surcharge, avec tous les menus. Il y a des groupes de champs et des champs communs.
          je passe par des tests pour afficher la valeur si celle-ci est non nulle, mais pour chaque ligne, je dois mettre un <br> au début pour qu'il y ait un retour à la ligne après la précédente valeur non nulle du champ précédent.
          De mémoire, j'avai du gérer cela une autre fois en faisant un test spécifique sur les <br> en fonction de la présence ou non du champ précédent. C'est assez prise de tête.
          Déjà content que tu n'ai rien à redire/proposer pour simplifier tous les tests de ce 2/
          Merci
          @+
          Faciliter l'adoption du meilleur du Libre auprès du grand public https://clibre.eu/ - Connaissez-vous des communicants ... pour promouvoir joomla ? https://forum.joomla.fr/forum/th%C3%...mouvoir-joomla

          Commentaire

          Annonce

          Réduire
          Aucune annonce pour le moment.

          Partenaire de l'association

          Réduire

          Hébergeur Web PlanetHoster
          Travaille ...
          X