Import txt to MySQL

Résolu
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    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
  2. Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
     
    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
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      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
  3. Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
     
    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
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      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
    2. Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
       
      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
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention  
         
        c'est fait ^^
        0