Aide pour transformer une requête SQL phpMyAdmin

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

  • [RÉGLÉ] Aide pour transformer une requête SQL phpMyAdmin

    Bonjour,

    Je sèche sur comment transformer pour Convert Forms une requête qui fonctionne dans phpMyAdmin sur les tables users, usergoups et usergroupmaps afin de remplacer celle-ci en filtrant sur le groupe d'utilisateur sélectionné dans une liste déroulante qui me renvoie l'ID du groupe
    Code:
    $db = \JFactory::getDbo();
    $query = $db->getQuery(true)
        ->select('id, name')
        ->from('#__users')
    ->order("name ASC");
    
    $db->setQuery($query);​
    La requête phpMyAdmin :
    Code:
    SELECT u.`id`,u.`name`,g.`group_id`,ug.`title` FROM `a9kij_users` as u LEFT JOIN `a9kij_user_usergroup_map` as g ON g.`user_id` =u.`id`LEFT JOIN `a9kij_usergroups` as ug ON ug.`id` = g.`group_id` WHERE g.`group_id`=21;   ​
    Le group_id 21 de l'exemple sera remplacé par la valeur récupérée de la liste "groups", une fois que j'aurai trouvé comment la transmettre.
    Ce sont les JOIN et ON sur lesquels je butte.

    Merci à qui pourra m'aider à comprendre comment faire !
    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

  • #2
    Hello,

    C'est pour quelle version de Joomla ?

    Voici une correction pour J3/J4 (penser a ajouter le : use Joomla\CMS\Factory; )
    avec controle d'erreur au cas ou

    Code PHP:
    use Joomla\CMS\Factory;

    $iGroupId 
    21// en attendant d'avoir la vraie source
    $db Factory::getDbo();
    $tUsers = array();
    try {
        
    $query $db->getQuery(true);
        
    $query->select("u.id, u.name,g.group_id,ug.title");
        
    $query->from('#__users as u');
        
    $query->join('left''#__user_usergroup_map g ON g.user_id=u.id');
        
    $query->join('left''#__usergroups ug ON ug.id=g.group_id');
        
    $query->where("g.group_id=".$db->quote($iGroupId));
        
    $db->setQuery($query);
        
    $tUsers $db->loadObjectList();
    } catch(
    Exception $e) {
        
    $tUsers = array();
    }
    ​ 
    C'est perfectible sur les controles de secu, mais test deja si ca marche
    woluweb aime ceci.
    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
      Merci Marc de ta réponse !

      J'étais en train de créer ceci avant de tester, en prenant pour exemple une partie de code de la version 5.0.1
      C'est du code pour remplir une liste dans un formulaire Convert Forms, je ne sais pas si le remplacement de JFactory par Factory est nécessaire ou géré par Convert Forms. Je vais essayer les deux méthodes
      ->select('u.id,u.name,g.group_id,ug.title')
      ->from($db->quoteName('#__users') . ' AS u')
      ->leftJoin($db->quoteName('#__user_usergroup_map') . ' AS g ON g.user_id =u.id')
      ->leftJoin($db->quoteName('#__usergroups') . ' AS ug ON ug.id =g.group_id')
      ->where('g.group_id=21');
      Les deux fonctionnent bien ! Reste à récupérer l'ID de la sélection de groupe.

      Et pour le moment, Factory ne peut pas être utilisé (j'ignore si un "use" peut être inséré dans la zone de code).
      garstud aime ceci.
      "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
      MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

      Commentaire


      • #4
        Bonjour,

        Je vais ouvrir une autre discussion spécifique à Convert Forms, afin de trouver comment activer cette requête lorsque la sélection dans la liste initiale change.
        Là où je l'ai placée actuellement, elle ne fonctionne qu'au moment où on charge le formulaire.

        Encore merci Marc !
        "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
        MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

        Commentaire

        Annonce

        Réduire
        Aucune annonce pour le moment.

        Partenaire de l'association

        Réduire

        Hébergeur Web PlanetHoster
        Travaille ...
        X