Bonjour,
J'utilise depuis TRÈS longtemps un script qui me permet d'importer en base un fichier txt ou csv comportant sur chaque ligne une adresse mail.
En plus de faire l'import il supprime les doublons du fichier et les doublons entre l fichier et la db.

Aujourd'hui je souhaiterais pouvoir importer en plus du mail d'autres infos (Nom, Prénom, Société). Tout en conservant le système de dédoublonnage sur le mail.

Le problème est que je ne sais pas comment faire évoluer le code si dessous.

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
 
	function ImportAbonnes ($file)
	{
		if ($file['type'] == 'text/plain' || $file['type'] == 'text/csv')
		{
			switch ($file['error'])
			{
				case 0: //--- Pas d'erreur
				$arr1 = array() ;
				$arr2 = array() ;
 
				//---- 
				$sql = '	SELECT 	' . PREFIX_DB . 'newsletter_abonne.mail FROM 	' . PREFIX_DB . 'newsletter_abonne' ;
				$query = mysql_query($sql) or die (mysql_error());
 
				$handle = $file['tmp_name'] ; 																					// nom du fichier txt
 
				//--- 
				while ( $row_mail = mysql_fetch_assoc($query) ) 																				// boucle de génération d'un arry avec les mails, tableau 1
				{ 
				   $email = $row_mail['mail'] ; 
				   $arr1[$email] = 1 ; 
				} 
 
				//--- lecture du fichier texte, tableau 2 
				if (file_exists($handle)) 																														// vérifi l'existance du fichier
				{ 
 
					$buffer = fopen ($handle, "r") ;																										// ouverture du fichie en lecture
					$buffer = file($handle) ; 						 																						// lit le fichier et le converti en tableau
					$buffer = array_unique($buffer); 																									// supprime les doublons
 
					$buffertmp = array_count_values($buffer);																						// tableau des doublons
					$MailExclus = '' ;																															// déclaratiopn de la 1er valeur (avant concatenation)
 
					foreach ($buffertmp as $key => $value)																						// boucle sur le tableau de doublon
					{
						if ($value > 1)
						$MailExclus.= $key ;																													// concaténation de la valeur
					}
 
					foreach ($buffer as $email) 																											// boucle de génération du 2éme array
					{ 
					  $email = trim($email); 
					  if ( !isset($arr1[$email]) && GlobalFunction::VerifAdresseMail($email)==TRUE)								// commpare le tableau de la bd avec celui du fichier + vérification du format du mail
						{
							$arr2[] = $email; 
						} 
						else 
						{
							$MailExclus.= $email . "\r\n" ;																									// liste des mails exclus
						}
 
					} 
 
					if (!empty($arr2))
					{
						foreach($arr2 as $mail) 																											// boucle d'insertion en base des mails restant du fichier
						{	
 
							$insertSQL = sprintf('INSERT INTO ' . PREFIX_DB . 'newsletter_abonne (mail) VALUES (%s)',
															Sql::GetSQLValueString($mail, "text")
														);
							$Result1 = mysql_query($insertSQL) or die(mysql_error());
						}
					}
 
					$result2 = count($arr2); 																												// compte le Nb d'enregistrement importée
				}
				else
				{
					$retour -> msg[] = 'Impossible de lire le fichier : ' . $file['name'] ;
					$retour -> valide[] = FALSE ;
				}
 
 
				/***********************************/
 
				if (!empty($result2))
				{
					$retour -> msg[] = $result2 . ' adresse'  . ($result2 >= 2 ? 's' : '') . ' mail enregistré' . ($result2 >= 2 ? 's' : '') ;
					$retour -> valide[] = TRUE ;
				} 
				else 
				{
					$retour -> msg[] = 'Après annalyse des mails du fichier "' . $file['name'] . '" et comparaison avec ceux existant en base de donnée, aucun mail n\'a été enregistré.';
					$retour -> valide[] = FALSE ;
				}
 
				/**************** FIN DU PROCESSUS ****************/
				break;
 
				case 1: // UPLOAD_ERR_INI_SIZE
					$retour -> msg[] = 'Le fichier téléchargé excède la taille maximum autorisée pour le téléchargement.'  ;
					$retour -> valide[] = FALSE ;
				break;
 
				case 2: // UPLOAD_ERR_FORM_SIZE
					$retour -> msg[] = 'Le fichier téléchargé excède la taille maximum autorisée pour le téléchargement.' ;
					$retour -> valide[] = FALSE ;
				break;
 
				case 3: // UPLOAD_ERR_PARTIAL
					$retour -> msg[] = 'Le fichier a été partiellement téléchargé.' ;
					$retour -> valide[] = FALSE ;
				break;
 
				case 4: // UPLOAD_ERR_NO_FILE
					$retour -> msg[] = 'Aucun fichier n\'a été téléchargé.' ;
					$retour -> valide[] = FALSE ;
				break;
 
				case 5: // UPLOAD_ERR_NO_FILE
					$retour -> msg[] = 'Erreur 5' ;
					$retour -> valide[] = FALSE ;
				break;
 
				case 6: // UPLOAD_ERR_NO_FILE
					$retour -> msg[] = 'Le dossier temporaire est manquant.' ;
					$retour -> valide[] = FALSE ;
				break;
 
				case 7: // UPLOAD_ERR_NO_FILE
					$retour -> msg[] = 'Échec de l\'écriture du fichier sur le disque.' ;
					$retour -> valide[] = FALSE ;
				break;
 
				case 8: // UPLOAD_ERR_NO_FILE
					$retour -> msg[] = 'L\'envoi de fichier est arrêté par l\'extension.' ;
					$retour -> valide[] = FALSE ;
				break;
			}
		}
		else
		{
			$retour -> msg[] = 'Le fichier n\'a pas le bon format : ' . $file['type'] ;
			$retour -> valide[] = FALSE ;
		}
 
		return $retour;
	}
Merci pour votre aide