Importer 400 adresses email dans table php
antho007
Messages postés
5
Statut
Membre
-
azerty0 Messages postés 1270 Date d'inscription Statut Membre Dernière intervention -
azerty0 Messages postés 1270 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je cherche à importer 400 adresses email contenue dans un fichier texte et séparé par une virgule dans une base de donnée d'adresse email pour un envoie de mailing list.
Y a t il une méthode pour le faire automatiquement
ma table s'appelle newsletter, elle comprend un champs "id" auto incrémenté et un champs "email" tout simplement, merci de m'aider car c'est urgent...
Help
SVP aidez moi
je cherche à importer 400 adresses email contenue dans un fichier texte et séparé par une virgule dans une base de donnée d'adresse email pour un envoie de mailing list.
Y a t il une méthode pour le faire automatiquement
ma table s'appelle newsletter, elle comprend un champs "id" auto incrémenté et un champs "email" tout simplement, merci de m'aider car c'est urgent...
Help
SVP aidez moi
2 réponses
-
Non, tu n'as pas de méthodes pour le faire authomatiquement,
tu vas devoir faire un script qui :
- recuperation du contenu du fichier
- explode sur le contenu avec la virgule en guise de séparateur
ensuite, tu parcours ton tableau issu du explode, et tu insers dans la base de données avec un foreach !
puis, tu peux aussi finir ton script de sorte a ce qu'il envoit les mails !-
voilà un petit script qui lire le contenu du fichier .txt et il fait l'ajout des mail dans la tableau newsletter
$fichier = "chemin du fichier .txt"; // chemin de ton fichier
if (file_exists($fichier))
{
$tableau = file($fichier);
while(list($cle,$val) = each($tableau))
{
$val = str_replace("\n", "", $val); // on remplace le retour à la ligne par rien
$mails = explode(";", $val); // $mails = tableau qui contient tous les @ mail</gras>
foreach ($mails as $mail)
{
if($mail == "")
{
}
else
{
$insertion = mysql_query("INSERT INTO newsletter VALUES ('', '$mail')") or die(mysql_error());
}
}
}
}
// les deux lignes qui viennet après : à utiliser dans le cas où tas un espace à la fin du text dans le fichier.txt
$id =mysql_insert_id(); // récupérer le dernier id insérer dans la base
// supprimer l'enregistrement qui correspond qu dernier id car elle est vide
$supression = mysql_query("DELETE FROM newslettre WHERE id = $id") or die(mysql_error());
après tu peux améliorer , par rapport a tes besoins
A+ -
C'est un bon script que tu nous donnes la, il peut cependant être améliorer. Inutile dégager les sauts de ligne pour commencer, mais pourquoi pas.
Ensuite, je suggère d'améliorer nettement la condition if($mail == "") par un regexp qui teste si l'adresse en est bien une... avant de l'insérer dans la base. Des scripts regexp pour ce genre de choses existent déjà...
J'ai pas compris pour le dernier enregistrement vide sinon... -
bonjour,
il peut être améliorer oui tas raison, mais en fait je le fais rapidement hier car antho007 nous a dis que c'est urgent :)
pour le dernier enregistrement, en fait quand j'ai tester le script, il ajout toujours à la fin un enregistrement vide. c'est pourquoi j'ai mis la suppression.
mais attention, normalement il y avait un espace à la fin du text dans mon fichier.txt donc execute le code sans les deux dernier lignes
$id =mysql_insert_id(); // récupérer le dernier id insérer dans la base
// supprimer l'enregistrement qui correspond qu dernier id car elle est vide
$supression = mysql_query("DELETE FROM newslettre WHERE id = $id") or die(mysql_error());
après ca dépend du fichier.txt s'il y a un espace à la fin ou met la suppression sinon on ne le mets pas
Bonne journée
A+ -
merci atout1 et azerty0 cela me donne des pistes, vous parlez de quel espace à la fin de chaque email, il suffirait que je les supprime tous les espaces afin que je n'ai plus ce problème. Mais le script que tu m'a fourni est conçu pour un fichier texte avec les emails séparés par un saut de ligne c'est bien çà??
Merci beaucoup en tout cas -
-
-
Sinon, il faut que le script degage les eventuels espaces a la fin, et voila ;). J'ai deja eus ce soucis aussi !