Import txt to MySQL

Résolu/Fermé
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 7 janv. 2015 à 15:16
jordane45 Messages postés 38169 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 mai 2024 - 8 janv. 2015 à 17:12
Bonjour à tous et meilleurs voeux !

Voilà, j'ai un bout de code qui ne fonctionne pas :\
J'essaie d'importer via un input file une liste d'adresse email dans ma table, mais je n'ai qu'une ligne vide qui s'insère.
Pouvez-vous m'aider svp ?

Voici mon fichier mes_mail.txt :
test1@test.com
test2@test.com
test3@test.com


Voici ma table :
CREATE TABLE IF NOT EXISTS `tb_newsletter_adresses` (
  `NumId` int(11) NOT NULL AUTO_INCREMENT,
  `Newsletter` varchar(255) NOT NULL,
  PRIMARY KEY (`NumId`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;


Voici mon code PHP
$myFile = $_FILES['FileMail']['name'];
if(!($myFile))
{print("Impossible d'ouvrir le fichier $file_name ");}        
for ($index=0; $index < count($myFile); $index++)
{
$token_table[1]=strTok(";");
$Newsletter = addslashes(trim($token_table[1]));
echo stripslashes($Newsletter)."<br/>";
$result = mysql_query("INSERT INTO tb_newsletter_adresses (Newsletter) VALUES ('$Newsletter')");

if ($result == 1)
{echo stripslashes($Newsletter)."inséré <br/>";}
else
{echo "error inserting stripslashes($Newsletter) <br/>";}
}

echo "***** CONTENU DE LA TABLE *****<br/>";
$result = mysql_query("select * from tb_newsletter_adresses ");
while($row = mysql_fetch_array($result))
{echo stripslashes($row['Newsletter'])."<br/>";}

3 réponses

jordane45 Messages postés 38169 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 mai 2024 4 660
7 janv. 2015 à 15:49
Bonjour,

Le souci.. c'est que là .. tu ne lis pas le contenu du fichier....
Il te faut utiliser les instructions :
$myFile = isset( $_FILES['FileMail']['name'])?$_FILES['FileMail']['name']:NULL;
if(!($myFile)){
  print("Impossible d'ouvrir le fichier $file_name ");
}else{ 
 //ouverture du fichier
$fp = fopen ($myFile, "r");

// Boucle sur les lignes du fichier
if ($fp){
	/*Tant que l'on est pas à la fin du fichier*/
	while (!feof($$fp)) {
		/*On lit la ligne courante*/
		$buffer = fgets($fp);
		/*Traitement */
		echo $buffer; // par exemple affichage

               // c'est ici que tu peux mettre l'INSERT en BDD

              
           
	}
	/*On ferme le fichier*/
	fclose($fp);
}
?>


}

1
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
7 janv. 2015 à 17:45
Merci Jordane,

Je rencontre un problème cependant :

Warning: fopen(mes_email.txt): failed to open stream: No such file or directory in /home/sivop/www/version_3/admin/gestions/newsletter/index.php on line 89
$fp = fopen ($myFile, "r");


$myFile = isset( $_FILES['FileMail']['name'])?$_FILES['FileMail']['name']:NULL;

if(!($myFile)){
print("Impossible d'ouvrir le fichier $FileMail ");
}else{ 
$fp = fopen ($myFile, "r");

if ($fp){
	while (!feof($$fp)) {
		$buffer = fgets($fp);
		echo $buffer;

$query = "INSERT INTO tb_newsletter_adresses VALUES('$Newsletter')"; 
$result= MYSQL_QUERY($query);               
           
}
fclose($fp);
}
}
0
jordane45 Messages postés 38169 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 mai 2024 4 660
7 janv. 2015 à 23:26
Tu as fait l'upload du fichier sur ton serveur avant d'essayer de le lire ?

testes ceci :
<?php

if(isset($_FILES['userfile']['name'])){
 // emplacement où sera stocké le fichier sur le serveur :
 // le dossier doit disposer des droits suffisant pour que le script puisse y coller un fichier 
 $uploaddir = './';
 $myFile= $uploaddir . basename($_FILES['userfile']['name']);
 // déplacement du fichier sur le serveur
 if (move_uploaded_file($_FILES['userfile']['tmp_name'], $myFile)) {
  // upload ok
  $fp = fopen ($myFile, "r");
   if ($fp){
      while (!feof($fp)) {
        $Newsletter = fgets($fp);
        echo $Newsletter;
        $query = "INSERT INTO tb_newsletter_adresses VALUES('$Newsletter')"; 
       $result= MYSQL_QUERY($query) or die("<pre>Erreur".$query ."</pre>");                       
     } // fin du While
     //fermeture du fichier
    fclose($fp);
  } // Fin du if($fp)
 } else {
  // upload KO
  echo "<pre> Erreur. Le fichier n'a pas été téléchargé ! </pre>";
 }
}

?>
0
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
8 janv. 2015 à 17:04
Merci beaucoup jordane,

J'ai récupéré un bout de ton code et ça fonctionne maintenant :

<?php if(isset($_POST['EnvoisMail'])){
//######################################
$myFile = isset( $_FILES['FileMail']['tmp_name'])?$_FILES['FileMail']['tmp_name']:NULL;
if(!($myFile)) {print("Impossible d'ouvrir le fichier ".$myFile);}        
//################################################### ERREUR DE BOUCLE
$fp = fopen($myFile, 'r') or die ("Unable to open the file");
if($fp){
while (!feof($fp)) {
$Newsletter = fgets($fp);
//###################################################
$result = mysql_query("INSERT INTO tb_newsletter_adresses (Newsletter) VALUES ('".$Newsletter."')");
//################################################### AFFICHE LES ELEMENTS AJOUTES
}
fclose($fp);
}
if ($result == 1)
{echo "<tr><td height='40' align='left' valign='middle'><div class='Message_Info'>La liste des abonnés a été ajoutée avec succès.</div></td></tr>";}
else
{echo "<tr><td height='40' align='left' valign='middle'><div class='Error_Info'>Une erreur est survenue lors de l'ajout de ".$Newsletter."</div></td></tr>";}
// FIN DE BOUCLE

//###################################################
}
?>

Merci beaucoup !
0
jordane45 Messages postés 38169 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 mai 2024 4 660
8 janv. 2015 à 17:07
Pas de soucis.

Par contre...

Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
0
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
8 janv. 2015 à 17:11
Désolé, j'avais carrément oublié !
Dis jordane, tu peux jeter un oeil sur mon nouveau sujet stp ?
https://forums.commentcamarche.net/forum/affich-31342342-envois-mail-en-html-petit-beug
0
jordane45 Messages postés 38169 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 mai 2024 4 660 > Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023
8 janv. 2015 à 17:12
c'est fait ^^
0