N'afficher qu'un seule valeur lors d'un foreach

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

  • #16
    punaise pareil...................
    voici mon complet avec tes corrections
    Code PHP:
    <?php
    $Filter_Field 
    $params->get('filter-field''0'); // je récupere les parametres
    $arrayFilter_Field explode(','$Filter_Field); // je créer un tableau des parametres
    foreach ($list[$ord]['standard'] as $item){ // boucle de récuperation des articles

    //print_r ($list[$ord]['standard']);
    $item $itemmodel->getItem($item->id$check_view_access=false);
                   
    $items = array(&$item);
                     
    // Get fields values from the DB,
                   
    FlexicontentFields::getFields($items);
    //print_r($arrayFilter_Field);
    if(isset($arrayFilter_Field[0])) {
      
    $arrayValue = array();

      
    // Pour chaque champs (c'est un parametre joomla que je recupere
      // dans un tableau)
      
    foreach ($arrayFilter_Field as $Filterfield) {
          
    // j'appelle une fonction qui me permet de parcourir
          // les articles sélectionnés plus haut et de trouver
          // la valeur contenus dans les champs au-dessus

          
    FlexicontentFields::getFieldDisplay($item$Filterfield);

          
    // suite de la fonction
          
    $value $item->fields[$Filterfield]->display;

          if (!empty(
    $value)) {
              if ((!
    in_array ($value$arrayValue))) {
                  
    //si cette valeur n'est pas vide et pas encore traitée
                  // j'affiche un bouton avec la valeur
                  
    echo '<button class="button" data-filter="'.$value.'">'.JText::_($value).'</button>';
                  
    // On stocke la valeur pour ne plus la traiter à l'avenir
               
    $arrayValue[] = $value;
              } 
    // if
          
    // if
      
    // foreach
    }
    }
    ?>
    Dernière édition par y.berges à 06/02/2018, 20h40
    Société : http://www.com3elles.com
    Bénévole : http://www.flexicontent.org

    Commentaire


    • #17
      bon je pense avoir cerné le problème mais pas trouver la sélection
      en fait si je fait un print_r de $arrayValue à la fin de ma boucle j'obtiens plusieurs array
      genre
      Array ( [0] => Super Utilisateur [1] => Article ) Array ( [0] => Super Utilisateur [1] => type traduit )
      etc
      donc la comparaison in_array proposé par christophe ne peut fonctionnée .... la je pioche encore .......
      Merci d'avance pour votre aide
      Société : http://www.com3elles.com
      Bénévole : http://www.flexicontent.org

      Commentaire


      • #18
        Oui tu as mis le doigt sur un truc intéressant : $value n'est pas une chaîne de caractères; $value est un array.

        Après ta ligne

        Code PHP:
        $value $item->fields[$Filterfield]->display
        ajoute

        Code PHP:
        $value $item->fields[$Filterfield]->display;
        print_r($value); 
        et tu devrais alors constater que c'est un array.

        Ta solution serait alors

        Code PHP:
        $value $item->fields[$Filterfield]->display[0]; 
        càd récupérer le premier élément du tableau et donc, p.ex., "Super Utilisateur".
        Christophe (cavo789)
        Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
        Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

        Commentaire


        • #19
          en fait non value est un string ...si je fait un print_r de $value ca plante
          je pense que le soucis c'est que mes foreach me créer X tableau a chaque tour nécessaire ...
          faut que je regarde si je peu en faire 1 seul ou comparer mes X tableau, le soucis étant que je ne peu prevoir le X ...
          Société : http://www.com3elles.com
          Bénévole : http://www.flexicontent.org

          Commentaire


          • #20
            Bonjour,

            Installe JDump pour tester : https://extensions.joomla.org/extens...opment/j-dump/
            Une fois installé, tu fais un : dump($value, 'ma var $value');
            Le 2ème paramètre est optionnel. C'est un commentaire pour s'y retrouver
            Dernière édition par lomart à 07/02/2018, 13h09
            UP, le plugin universel à découvrir sur https//up.lomart.fr
            bgMax
            , AdminOrder, MetaData, Zoom, ArtPlug, Custom, Memo, Filter, ... sur http://lomart.fr/extensions

            Commentaire


            • #21
              La version sur la JED n'est pas correcte pour un PHP 7.2
              Donc, ci-joint, ma version modifiée
              Fichiers joints
              UP, le plugin universel à découvrir sur https//up.lomart.fr
              bgMax
              , AdminOrder, MetaData, Zoom, ArtPlug, Custom, Memo, Filter, ... sur http://lomart.fr/extensions

              Commentaire

              Annonce

              Réduire
              Aucune annonce pour le moment.

              Partenaire de l'association

              Réduire

              Hébergeur Web PlanetHoster
              Travaille ...
              X