Liste multichoix des utilisateurs

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

  • [RÉGLÉ] Liste multichoix des utilisateurs

    Bonjour,
    J'ai besoin de faire une liste multichoix des utilisateurs de mon site dans le cadre d'un module que je prépare.

    Dans mes composants développés avec Component Creator j'utilise le type foreignkey, mais en dehors des composants développés avec Component Creator cela ne fonctionne pas.

    Je cherche s'il n'existe pas un autre type de champs qui me permettrait de faire cela.

    Quelqu'un sait-il si cela existe ?

    Cordialement.
    Eric

  • #2
    Re : Liste multichoix des utilisateurs

    Bonsoir Eric,

    Si j'ai bien compris, tu veux sélectionner plusieurs utilisateurs dans les paramètres de ton module.
    Ci-dessous le code pour le fichier xml repris d'un de mes plugins

    Code PHP:
    <field name="lmmm_dest" 
       
    type="sql" 
       
    multiple="true" 
       
    query="SELECT DISTINCT id,name from #__users AS u INNER JOIN #__user_usergroup_map AS g WHERE g.user_id=u.id AND g.group_id IN (3,4,5,6,7,8) AND u.block=0" 
       
    key_field="id" value_field="name"  
       
    label="LMMM_DEST_LABEL" 
       
    description="LMMM_DEST_DESC" 
    /> 
    Requete SQL a adapter à ton besoin
    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


    • #3
      Re : Liste multichoix des utilisateurs

      Bonsoir Lomart,
      Merci beaucoup.
      J'avais regardé du côte du type SQL, mais ne voyais pas comment faire.

      Effectivement c'est ce que je veux faire.

      Ensuite, j'ai besoin de comparer si l'ID de l'utilisateur duquel on visite le profil est présent dans cette liste.
      Je cherche une fonction qui me permettrait de faire ça, j'ai essayé strpos, mais dès que j'ai plus d'une ID dans la liste cela ne fonctionne plus.
      J'essaie aussi strpbrk, mais là aussi ce ne doit pas être le bon choix.

      J'ai fait (Pour récupérer l'ID de l'utilisateur):
      Code HTML:
      $app = JFactory::getApplication();
      $idTarget = $app->input->get('id', $idUser, 'int');
      Je récupère bien l'ID du User du profil visité.

      C'est après que ça bloque.

      Cordialement.
      Eric

      Commentaire


      • #4
        Re : Liste multichoix des utilisateurs

        Je pense que quelque chose comme cela doit te convenir
        Code PHP:
        $currentUserID JFactory::getUser()->id;
        if (!
        in_array($currentUserID$this->params->get('param_name'))) {
             return;

        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


        • #5
          Re : Liste multichoix des utilisateurs

          Merci,
          Je regarde ça.
          Je me reconnecte plus tard dans la soirée.
          Bien cordialement.
          Eric

          Commentaire


          • #6
            Re : Liste multichoix des utilisateurs

            Dans ton code tu forces "int", tu demandes donc explicitement un chiffre. Ce n'est forcément pas le cas avait un choix multiple.

            Selon le besoin tu peux faire un explode en php d'une chaîne avec un séparateur pour obtenir un array. Ensuite la vérification se fera avec in_array.
            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
              Re : Liste multichoix des utilisateurs

              Bonjour,
              De retour après quelques jours où le temps me manquait.

              Donc pour en revenir au fil de cette discussion, j'ai la variable $Liste = $params->get('ListeUsers'); qui "théoriquement" affiche la liste des ID des utilisateurs sélectionnés dans le champ SQL

              Code PHP:
              <field name="ListeUsers"  
              type="sql"  
              multiple="true"  
              query="SELECT Username AS username FROM #__users"  
              key_field="username"
              value_field="id"   
              label="Nom des utilisateurs certifiés"
              /> 
              Je souhaitais tester le contenu de cette variable, quand je fais un print-r de cette variable, mon module ne fonctionne plus.

              Code PHP:
              <?php
              // Tableau des ID des membres certifiés
              $Liste $params->get('ListeUsers');
              print_r $Liste;    
              ?>
              Est-ce normal ?

              Car voilà ce que je souhaitais faire:
              Code PHP:
              <?php
              $app 
              JFactory::getApplication();
              // Suivre l'Id de l'utilisateur. (Utilisateur dont on obeserve le profil)
              $idTarget $app->input->get('id'$idUser'int');
              $idTargetUserName JFactory::getUser($idTarget)->username;
              $userObj ES::user($id);
              ?>

              <?php
              // Tableau des ID des membres certifiés
              $Liste $params->get('ListeUsers');
              ?>
              <?php

              $array 
              = array($Liste);
              // Boucle pour afficher les 3 premiers éléments de la liste
              for ($Name=0$Name<3$Name++)
              {
              // Test
              echo $array[$Name].'<br/>';
              }
              ?>

              Quand je teste echo $array[$Name].'<br/>'; le tableau reste vide.
              Comment savoir si $params->get('ListeUsers'); renvoie bien la liste des ID des Users ?

              Cordialement.

              Eric
              Dernière édition par Agrepe à 25/08/2017, 10h22

              Commentaire


              • #8
                Re : Liste multichoix des utilisateurs

                Code:
                print_r $Liste
                devrais être
                Code:
                print_r($liste);

                Commentaire


                • #9
                  Re : Liste multichoix des utilisateurs

                  Bonjour,
                  Merci beaucoup.

                  Cela est effectivement mieux.

                  J'affiche bien les éléments de ma sélection maintenant avec.

                  Code PHP:
                  foreach($Liste as $element)
                      {
                          echo 
                  $element '<br />';
                      } 
                  Je vais maintenant réfléchir comment comparer le Username de l'utilisateur visé et le contenu du tableau pour vérifier s'il est présent ou absent de ce tableau

                  Cordialement.

                  Eric

                  Commentaire


                  • #10
                    Re : Liste multichoix des utilisateurs

                    Un tableau qui contient une liste des utilisateurs? Si ce sont des utilisateurs joomla passe plutôt par un groupe spécifique c plus simple à gérer . Cela devient 2 clics de souris dans le profil utilisateur pour gérer la liste

                    envoi du Forum Joomla.fr version mobile sur Archos 40 Helium

                    Commentaire


                    • #11
                      Re : Liste multichoix des utilisateurs

                      Bonjour,
                      En fait il s'agit d'une liste utilisateur EasySocial.
                      Je dois faire cela à partir d'un type de profil EasySocial
                      Cordialement.
                      Eric

                      Commentaire


                      • #12
                        Re : Liste multichoix des utilisateurs

                        Bonjour,
                        J'arrive au résultat mais il persiste un petit souci.

                        $Liste renvoie les ID des utilisateurs concernés, j'ai donc une liste d'ID.
                        idTarget est l'ID du membre pour lequel on observe son profil. je récupère bien l'ID, grâce à:
                        Code PHP:
                        $app JFactory::getApplication();
                        // Suivre l'Id de l'utilisateur. (Utilisateur dont on obeserve le profil)
                        $idTarget $app->input->get('id'$idUser'int'); 
                        Ensuite pour observer si idTarget est bien dans la liste ($elements) j'ai fait:

                        Code PHP:
                        foreach($Liste as $element)    {
                            echo 
                        $element '<br/>'// Pour tester si j'affiche bien les ID des membres concernée (là c'est bon)
                            
                        }
                        // Tableau
                        $Certifie = array($element);
                        // Recherche dans le tableau
                        if (in_array($idTarget$Certifie)) {
                            
                        $IconeUserProfil $IconeShow;
                            
                        $MessageUserProfil $Message;    
                            } 
                        Cela fonctionne à l’exception prêt que cela ne fonctionne que pour un seul des membres quelque soit la quantité d'id présentes dans $Certifie

                        J'ai regardé si en séparant ma chaîne, si cela m'aiderait, alors j'ai utilisé implode mais là, je n'affiche plus qu'une seule des ID de la liste. (La dernière)
                        Code PHP:
                        // Tableau
                        $Certifie = array($element);
                        $virgule implode(","$Certifie);
                        echo 
                        $virgule
                        Quelqu'un aurait-il une idée ?

                        Cordialement.

                        Eric

                        Commentaire


                        • #13
                          Re : Liste multichoix des utilisateurs

                          Je me réponds à moi-même, mais si cela peut être utile ...

                          J'avais omis
                          Code PHP:
                          <?php }?>
                          Pour fermer ma boucle.

                          Donc:
                          Code PHP:
                          <?php
                          foreach($Liste as $element)    {

                          // Tableau
                          $Certifie = array($element);

                          // Recherche dans le tableau
                          if (in_array($Id de ce que je recherche$Certifie)) {
                              
                          $IconeUserProfil $IconeShow;
                              
                          $MessageUserProfil $Message;    
                              }
                          ?>
                          <?php 
                          }?>

                          Commentaire

                          Annonce

                          Réduire
                          Aucune annonce pour le moment.

                          Partenaire de l'association

                          Réduire

                          Hébergeur Web PlanetHoster
                          Travaille ...
                          X