it-swarm-eu.dev

Come creare un ciclo Foreach che restituisca gli utenti in un gruppo utenti specifico

Il mio obiettivo è quello di creare una casella di selezione html tramite un ciclo foreach che restituisca tutti gli utenti all'interno di uno specifico gruppo utenti personalizzato (es. Gruppo utenti = agenti).

Una volta, la query inserisce tutti i record (utenti) per quel determinato gruppo utenti, quindi devo estrarre i dati da più tabelle per ciascun utente, come ad esempio: #__users e #__user_profiles, poiché desidero acquisire informazioni #__user come come: nome ed e-mail, acquisendo anche informazioni #__user_profile come: indirizzo1, città, codice postale, ecc ...

Qualsiasi aiuto sarebbe apprezzato….

Codice pseudo per quello che penso di aver bisogno

SELECT *
  FROM #__users AND #__user_profiles
  WHERE #__usergroup.title = Agent
  ORDER BY #__users.name ASC;

<select>
FOREACH user that has a #__usergroup.title = Agent
  <option>
  OUTPUT (
    #__users.name,
    #__users.email
    #__users.usertype,
    #__user_profiles.address1,
    #__user_profiles.city,
    #__user_profiles.postal_code,
    #__user_profiles.phone,
    #__user_profiles.website
  );
  </option>
END FOREACH
</select>
1
Corey

Per rispondere alla domanda effettiva, questo codice fornisce una casella di riepilogo di ID utente e nomi. Il recupero di tutti i dati extra sarebbe quindi solo un'istruzione di selezione SQL

$myGroupID = 2;  //Your User Group to list
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('a.id as value, a.name as text');
$query->from($db->quoteName('#__users').' as a');
$query->join('INNER', '#__user_usergroup_map as b ON b.user_id=a.id AND b.group_id='.$myGroupID);
$query->order('a.name');
$db->setQuery($query);
$MyUsers = $db->loadObjectList();
$mt = new stdClass();
$mt->value = '';
$mt->text = 'Select the User Profile';
array_unshift($MyUsers, $mt);
echo JHtml::_('select.genericlist', $MyUsers, 'MyListboxName', 'title="Select from My List"', 'value', 'text');

Con l'ID selezionato dall'elenco, utilizzare questo SQL per ottenere i dati del profilo:

SELECT a.*,b.* 
FROM j32_users AS a
JOIN j32_user_profiles AS b ON b.user_id=a.id
WHERE a.id = "selected ID"
3
GDP

Dovresti cercare il numero ID corrispondente fornito con il gruppo "Agente", o includere la tabella #__usergroups nella tua query.

quindi, per ogni utente, se il gruppo è uguale a "agente" (o qualunque numero sia, se non si include la tabella dei gruppi di utenti), restituire il nome, l'e-mail, ecc.

Spero che sia d'aiuto. Potrei sbagliarmi perché è passato un po 'di tempo, ma in passato ha funzionato per me.

0
Hocho