Précédent   Forum des professionnels en informatique > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/06/2011, 11h22   #1
Nouveau Membre du Club
 
Homme
Informatique
Inscription : mai 2011
Messages : 112
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Informatique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 112
Points : 36
Points : 36
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 :
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();
beber005 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 11h32   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
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 :
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";
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 11h45   #3
Nouveau Membre du Club
 
Homme
Informatique
Inscription : mai 2011
Messages : 112
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Informatique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 112
Points : 36
Points : 36
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
beber005 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 11h55   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
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 :
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";
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 12h36   #5
Nouveau Membre du Club
 
Homme
Informatique
Inscription : mai 2011
Messages : 112
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Informatique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 112
Points : 36
Points : 36
D'accord..Merci beaucoup du tuyau ça m'a grandement servi =)
beber005 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h30.


 
 
 
 
Partenaires

Hébergement Web