IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Sectionner plusieurs groupe un array


Sujet :

Langage PHP

  1. #1
    Inactif
    Inscrit en
    Mars 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 15
    Points : 12
    Points
    12
    Par défaut Sectionner plusieurs groupe un array
    Bonjour,

    je souhaite trier un array pour le sectionner en groupe si certaines valeurs sont identique

    le but est de récupérer la liste des inscrits à des alertes, de les trier par groupe suivant si ils ont en commun la même alerte et d'envoyer à ce groupe 1 mail (copie caché) contenant les dernières annonces, cela évite d'envoyer 1 mail pour 1 inscrit.

    Pour faire simple voici ce que j'ai en tête:

    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    // SELECT email, region, rubrique FROM alerte ORDER BY region, rubrique ASC
    // Stock le resultat dans un array (while -> foreach ...) que voici ci dessous.
    
    Array ( [region] => 1 [rubrique] => 1 [email] => user_1 ) 
    
    Array ( [region] => 1 [rubrique] => 2 [email] => user_2 ) 
    Array ( [region] => 1 [rubrique] => 2 [email] => user_3 ) 
    
    Array ( [region] => 1 [rubrique] => 3 [email] => user_4 ) 
    
    Array ( [region] => 2 [rubrique] => 1 [email] => user_5 ) 
    Array ( [region] => 2 [rubrique] => 1 [email] => user_6 )
     
    Array ( [region] => 2 [rubrique] => 2 [email] => user_7 ) 
    Array ( [region] => 2 [rubrique] => 2 [email] => user_8 ) 
    Array ( [region] => 2 [rubrique] => 2 [email] => user_9 )

    Donc je voudrais ensuite trier l'array pour faire des groupes d'users qui ont soucrit aux mêmes options (region/rubrique), cela
    me permet par la suite de parcourir chaque groupe et d'envoyer 1 seul mail en copie caché au groupe avec les 5 dernieres annonces.

    exemple:
    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    while // on boucle sur chaque groupe
    {	
    	
    	Envoi le mail à -> user_1
    	// SELECT annonce FROM annonce WHERE region = 1 rubrique = 1 LIMIT 5
    	// envoi mail ...
    
    	Envoi le mail à -> user_2, user_3
    	// SELECT annonce FROM annonce WHERE region = 1 rubrique = 2 LIMIT 5
    	// ...
    	
    	Envoi le mail à -> user_4
    	// SELECT annonce FROM annonce WHERE region = 1 rubrique = 3 LIMIT 5
    	// ...
    	
    	Envoi le mail à -> user_5, user_6
    	// SELECT annonce FROM annonce WHERE region = 2 rubrique = 1 LIMIT 5
    	// ...
    	
    	Envoi le mail à -> user_7, user_8, user_9
    	// SELECT annonce FROM annonce WHERE region = 2 rubrique = 2 LIMIT 5
    	// ...

    Merci pour aide

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    logiquement, vu que tu as un order by dans ta requête, tes utilisateurs sont déjà dans l'ordre... Ce que tu peux faire, c'est reconstruire un array en indexant par region, puis par rubrique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    //en supposant que $results soit le tableau issu de ta requête
    $resultsTries = array();
    foreach ($results as $ligne)
    {
      $resultsTries[$ligne['region']][$ligne['rubrique']][] = $ligne['email'];
    }
     
    //on envoie les mails par lecture du tableau trié :
    foreach ($resultsTries as $region => $liste)
    {
      foreach ($liste as $rubrique => $listeEmails)
      {
        //là $listeEmails contient les mails dans un tableau, pour $rubrique et $region
      }
    }

Discussions similaires

  1. appelle de 1 ou plusieurs groupe d'objets
    Par MaMyProg dans le forum Windows
    Réponses: 2
    Dernier message: 19/04/2007, 09h18
  2. Créer un utilisateur sous plusieurs groupes
    Par djibril dans le forum Administration système
    Réponses: 1
    Dernier message: 20/09/2006, 16h15
  3. Créer un utilisateur sous plusieurs groupes
    Par djibril dans le forum Réseau
    Réponses: 0
    Dernier message: 20/09/2006, 10h49
  4. [VB6] prob plusieur groupe OptionButton
    Par Cirdan Telemnar dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 04/07/2006, 11h20
  5. validation form en fonction de plusieurs groupe de checkbox
    Par Steph777 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/01/2006, 12h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo