Fork me on GitHub






Récupère les adresses email par groupe !
Régulier
Inscrit: 27/11/2005 18:07
Messages: 355
Bonjour !

Je souhaiterai récupère les adresses email d'un groupe de mon site sous forme de fichier Exel

Avec les colonnes:
- Pseudo
- Email

J'ai ça mais c'est général et non pour un groupe seulement:
https://www.frxoops.org/modules/newbb/ ... id=174839#forumpost174839

Merci de votre coup de pouce !

Posté le : 14/02/2014 11:11
Partager Twitter Partagez cette article sur GG+
Re: Récupère les adresses email par groupe !
Admin Frxoops
Inscrit: 16/05/2003 18:10
De Rhone-Alpes
Messages: 4051
Il te faudra travailler sur 2 tables :
- groups_users_link
- users.

Pour le groupe groupid=1 (Administrateurs)

la requête PHP à intégrer dans XOOPS :
$sql "SELECT uname, email FROM users, groups_users_link where groupid=1";

la requête pure SQL :
SELECT unameemail FROM usersgroups_users_link where groupid=1

Pour les membres normaux : groupid=2 (Utilisateurs enregistrés)...

Posté le : 14/02/2014 14:31

Open in new window
Partager Twitter Partagez cette article sur GG+
Re: Récupère les adresses email par groupe !
Admin Frxoops
Inscrit: 05/03/2005 05:20
De Vaucluse
Messages: 960
Citation :
la requête pure SQL :
SELECT uname, email FROM users, groups_users_link where groupid=1
Aieee tous les doublons !!!
Cela devrai aller mieux en modifiant la condition:
SELECT t1.uname,t1.email FROM xxxx_users AS t1
INNER JOIN 
xxxx_groups_users_link 
AS t2
WHERE t1
.uid=t2.uid AND t2.groupid =2

ou pour reprendre la syntaxe d'alain:
SELECT t1.uname,t1.email FROM xxxx_users AS t1
xxxx_groups_users_link AS t2
WHERE t1
.uid=t2.uid AND t2.groupid =2

Allez, au boulot

Posté le : 14/02/2014 19:50

Edité par slider84 sur 16/02/2014 10:12:40

Open in new window

Xoops 2.5.7.2 - Debian 8.2 - Apache 2.4.10 - MySQL 5.5.47 - Php 5.6.17
Partager Twitter Partagez cette article sur GG+
Re: Récupère les adresses email par groupe !
Régulier
Inscrit: 27/11/2005 18:07
Messages: 355
Super merci ! J'essai ça demain !!!

Posté le : 14/02/2014 20:27
Partager Twitter Partagez cette article sur GG+
Re: Récupère les adresses email par groupe !
Admin Frxoops
Inscrit: 05/03/2005 05:20
De Vaucluse
Messages: 960
Petite astuce du jour en gardant le même exemple.

Cas concret rencontré cet aprés midi: Tester l'appartenance (pour tous les utilisateurs) à un ou plusieurs groupes afin de personnaliser les actions en fonction de ceux-ci. Généralement le principe est le suivant:
- On requête les utilisateurs (table users)
- Dans une boucle on teste l'appartenance de chaque utilisateur aux groupes (table groups_users_link) afin de personnaliser les actions.
> Si appartient groupe 1 alors xxx
> Si appartient groupe 2 alors yyy
> Si... etc.
- Fin de la boucle

Inconvénient de ce principe basique: On requête la table des groupes pour chaque utilisateur de la liste. Donc pour 1000 users, 1000 requêtes...

Il est cependant possible de remonter tous les groupes d'un utilisateur dans un champ dans la même requête:
SELECT t1.uid,t1.uname,t1.email,ugroups
FROM xxxx_users 
as t1 
LEFT JOIN 
(
SELECT t2.uid,
GROUP_CONCAT(t2.groupid order by t2.uid) AS ugroups
FROM xxxx_groups_users_link 
AS t2 
GROUP BY t2
.uid
)
AS 
ugroups
ON ugroups
.uid t1.uid

Le résultat obtenu en retour de cette requête est le suivant:
Open in new window
Donc une seule requête à la base de données quelque soit le nombre d'utilisateurs
Il est alors facile en php de récupérer les valeurs du champ ugroups (qui contient tous les groupes d'appartenance de l'utilisateur) dans un tableau avec la fonction "explode" et de les tester ensuite avec "in_array".
Je sais, je sais... je développe des trucs bizarres
PS: Les pseudos et adresses e-mail de l'impression écran sont totalement fantaisistes

Posté le : 16/02/2014 21:45

Open in new window

Xoops 2.5.7.2 - Debian 8.2 - Apache 2.4.10 - MySQL 5.5.47 - Php 5.6.17
Partager Twitter Partagez cette article sur GG+
Re: Récupère les adresses email par groupe !
Admin Frxoops
Inscrit: 16/03/2009 16:40
De Tende (06)
Messages: 3528
Intéressant, merci Slider !

Posté le : 16/02/2014 21:52

Open in new window

Xoopseuse Mai 2012 | Responsable équipe internationale | Recherche avancée en bas de page !
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

44 Personne(s) en ligne (37 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 44 | Plus ...