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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Supprimer adresses d'un tableau


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Informatique
    Inscrit en
    Mai 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 133
    Par défaut Supprimer adresses d'un tableau
    bonjour à vous tous,

    Vous comprendrez avec mon code, une fois le découpage d'adresse en un paquet de 50 j'aimerais que les adresses utilisées soient supprimées et laissent place aux autres 50 adresses ainsi desuite. Si quelqu'un pouvez m'aider merci vraiment d'avance car je suis bloqué depuis quelques jours dessus

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    while($count > 0)
    {
    	if($count > 50)
    	{
    		//	Si le nombre d'éléments est supérieur à 50
    		//	on découpe celui-ci en paquet de 50
    		$compteurMax = 50;
    	}
    	else
    	{		 
    		$compteurMax = $count;
    	}
    	for($i = 0; $i < $compteurMax ; $i++)
    	{			
    		$mail->AddAddress($tabStringExplode[0]);
    		//	Supprime l'élément précédent
    		//	permet de décaler la liste d'email
    		unset($tabStringExplode[0]);
    	}
    	$var = $mail->Send();
    	if($var)
    	{
    		//	Pas d'erreur le programme continue à boucler
    		$count = count($tabStringExplode);
    	}
    	else
    	{
    		//	Erreur rencontré le programme ce stop
    		$count = 0;
    	}	
    }
    //	Test sur l'état de la variable
    if($var)
    {
    	echo '<script type="text/javascript">alert(\'La newsletter a bien été envoyé\');</script>';
    }
    else
    {
    	echo '<script type="text/javascript">alert(\'Problème rencontré dans lenvoi de la newsletter\');</script>';
    }
    //	Coupe la connexion avec le serveur SMTP
    $mail->SmtpClose();

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Hello

    Je ne comprends pas bien quel est l'intérêt de "vider" ton tableau d'adresses à moins que tu ne manipules des jeux de données très volumineux...

    Pourquoi ne pas se servir directement de array_splice ?

    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
    16
    define('ADDR_SLICE_SPAN', 50);
     
    $adresses = array_fill(0, 1000, 'test@test.test');
    $results = array();
     
    $offset = 0;
    while ($slice = array_splice($adresses, $offset, ADDR_SLICE_SPAN)) {
      foreach ($slice as $address) {
         $mail->AddAddress($address);
      }
      $results[] = $mail->Send();
      $offset += ADDR_SLICE_SPAN;
    }
     
    echo count(array_keys($results, true, true)) . " mails envoyés";
    echo count(array_keys($results, false, true)) . " mails non envoyés";

  3. #3
    Membre confirmé
    Homme Profil pro
    Informatique
    Inscrit en
    Mai 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 133
    Par défaut
    Merci beaucoup de ta réponse =)

    Le code que tu viens de me donner fait la même chose que mon code ?..Beh j'y avais pensé à utiliser la fonction array_splice mais je sais pas trop comment l'utiliser. Vider mon tableau d'adresse servirait en fait à ne pas réutiliser les adresses lors du nouvel envoit..car actuellement ça donne ça :
    nouvel envoit = ancienne adresse + nouvelle adresse
    Si je ne me trompe pas

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Contrairement à array_slice, array_splice extrait une portion d'un tableau passé par référence en paramètre et le remplace par une nouvelle portion (ou aucune si rien n'est spécifié).

    On pourrait simplifier ton algorithme en utilisant un pop classique, ça ferait pareil:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    define('ADDR_SLICE_SPAN', 50);
     
    $adresses = array_fill(0, 1000, 'test@test.test');
    $results = array();
     
    $current = 0;
    while ($address = array_pop($addresses)) { // array_unshift pour prendre les éléments par le début
      $mail->AddAddress($address);
      if ((++$current) % ADDR_SLICE_SPAN == 0)
        $results[] = $mail->Send();
    }
     
    echo count(array_keys($results, true, true)) . " mails envoyés";
    echo count(array_keys($results, false, true)) . " mails non envoyés";

  5. #5
    Membre confirmé
    Homme Profil pro
    Informatique
    Inscrit en
    Mai 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 133
    Par défaut
    D'accord..Merci beaucoup du tuyau ça m'a grandement servi =)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Adresse d'un tableau de charactères
    Par GhostNemo dans le forum C
    Réponses: 7
    Dernier message: 14/04/2007, 22h10
  2. recherche d'une adresse d'un tableau multidimensionnel
    Par tamara6 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 06/01/2007, 00h29
  3. supprimer lignes/cellules de tableau vides
    Par Drozo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/08/2006, 13h21
  4. Supprimer un élément de tableau
    Par zoidberg dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/06/2006, 16h34
  5. Adresse d'un tableau de char
    Par Trap D dans le forum C
    Réponses: 8
    Dernier message: 23/12/2003, 12h02

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