Explode

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

  • [RÉGLÉ] Explode

    Bonjour,
    Dans un composant j'utilise un champ multi-choix.

    Dans une des vues du composant je récupère la liste des options choisies de la manière suivante.

    Code PHP:
    <?php echo $this->item->classification?>
    Ce qui affiche :
    point-de-vue.png, picnic.png, aire-de-jeux.png, boissons.png, camping.png, chemin-eclaire.png, coin-du-feu.png, ensoleille.png, equipement-necessaire.png, feu-interdit.png
    J'ai besoin d'afficher les images.
    J'ai fait :

    Code PHP:
    <?php
    $delimiter 
    ",";
    $str $this->item->caractristiques;
    explode($delimiter$str);
    ?>
    Un print_r me permet d'afficher :
    Array ( [0] => point-de-vue.png [1] => picnic.png [2] =>aire-de-jeux.png [3] => boissons.png [4] => camping.png [5] => chemin-eclaire.png [6] => coin-du-feu.png [7] => ensoleille.png [8] => equipement-necessaire.png [9] => feu-interdit.png )

    Je cherche comment afficher les images à la place des noms. (Ces images sont enregistrées dans le dossier images du site)

    Quelqu'un a-t-il une idée ?

    Cordialement.

    Eric
    Dernière édition par Agrepe à 13/01/2020, 21h35

  • #2
    Je me réponds à moi-même si cela peut aider, toutefois un petit souci persiste.

    D'abord, voici ce que j'ai fait :

    Code PHP:
    <?php 
    $delimiter 
    ",";
    $str $this->item->caractristiques;
    $liste explode($delimiter$str);
    $UploadPath='/images/com_randonne/images/';

    ?>
    <?php 
    foreach ($liste as $value) {
        
    $Values $value;
        echo 
    $UploadPath."".$Values;
        
    ?>

        <div style = "width:68px; margin: 5px 10px">
        <img src="<?php echo $UploadPath."".$values?>">
        </div>

    <?php
        
    }
    ?>
    Là où je bute c'est qu'il reste un espace dans le chemin de l'image (construit par le foreach) juste devant le nom du fichier image.

    "/images/com_randonne/images/ picnic.png"

    Je ne vois pas ce qui se passe ?

    Commentaire


    • #3
      Bonjour

      Pour supprimer un espace, en PHP, il y a la fonction "trim()".

      Sur base de ce que je lis de ton code; perso, si j'avais à écrire quelque chose dans ce genre, aussi minimal, je ferais comme ceci :

      Code PHP:
      <?php

      $arr 
      explode("'"$this->item->caractristiques);

      $sImg '';

      foreach (
      $arr as $item) {
          
      $sImg.= '<img class="thumbnails" src="/images/com_randonne/images/' trim($item) . '" />';
      }

      echo 
      '<div>' $sImg '</div>';

      ?>
      (non testé)

      Maintenant je ne comprends pas pourquoi tu as un chemin /images/.../images (pourquoi cette répétition) ni pourquoi tu n'utilises pas le dossier /media.

      Le chemin vers les images devrait dans le meilleur des mondes ne pas être écrit en dur; n'y-a-t-il pas une fonction en Joomla pour obtenir certains chemins ? Premier lien que je trouve sur Google : https://www.joomshaper.com/forums/me...oded-to-images

      (toujours éviter de hardcoder; plus tu respectes le framework Joomla plus ton outil sera évolutif et profitera des nouvelles de Joomla)

      Bonne journée;
      Dernière édition par cavo789 à 14/01/2020, 09h11
      Agrepe aime ceci.
      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


      • #4
        ton espace ne viendrait-il pas de <?php echo $UploadPath."".$values; ?> au lieu de <?php echo $UploadPath."/".$values; ?>
        sinon tes données sont séparées par virgule et espace.
        si tu fait un ltrim de $Values çà donne quoi ?
        Agrepe aime ceci.

        Commentaire


        • #5
          Bonjour,
          Merci beaucoup pour votre aide.

          Je n'avais pas tenté 'trim' car il n'y avait jamais l'espace sur le premier item, (sans que je ne sache pourquoi ?) je cherchais donc dans la structure du code, "trim" a bien résolu le problème.

          A propose du chemin avec image/.../images c'est simplement que dans le dossier j'ai plusieurs sous-dossiers pour classer les images correctement.

          Je regarde de près le lien que tu m'as communiqué : https://www.joomshaper.com/forums/me...oded-to-images

          Pour avancer un peu plus, dans ma table j'ai un champ "Nom" et un champ "Image", dans le cas évoqué je ne récupère que les valeurs des champs "Image"

          J'aurai aimé récupérer le nom qui correspond à l'image pour l'afficher dans une info bulle au survol de l'image.


          Comment pourrais-je faire pour utiliser la valeur du champ "nom" qui correspond à l'image affichée pour en faire l'info bulle ?

          Cordialement.

          Commentaire


          • #6
            Pour ce qui est de la présence de l'espace, cela tends à montrer que le séparateur n'est pas juste une virgule mais suivie d'un espace.
            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


            • #7
              Bonjour,
              Effectivement il est bien présent quand on affiche la liste.

              Merci beaucoup pour votre aide à ce sujet.

              J'ouvre un autre post pour l'autre partie de la réflexion à propos des infos bulles.

              Cordialement.

              Commentaire

              Annonce

              Réduire
              Aucune annonce pour le moment.

              Partenaire de l'association

              Réduire

              Hébergeur Web PlanetHoster
              Travaille ...
              X