INSERER LES DONNEES FICHIER TXT DANS MYSQL

Fermé
JOLIKOLO - 12 mars 2008 à 23:30
Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 - 14 mars 2008 à 11:44
Bonjour,

J ai un petit soucis de programmation.

Dans mon systeme de newsletter, j ai un script qui m exporte en fichier txt les emails des membres selon des criteres bien définis.

Maintenant j aurai aimé qu un autre script se charge de lire le fichier txt uploadé sur le serveur et contenant des adresses mails, puis de les insérer dans ma table mysql comportant uniquement un champ "email".

Voici donc le script que j ai devellopéé mais visiblement cela ne fonctionne pas car le script s execute mais rien n est inserer dans la base.


 <?php 
include ('dbconnect.php');

while(!fopen('emails.txt' , 'r'))
{
  $ligne = rtrim(fgets('emails.txt'));
 mysql_query('INSERT INTO tempmail VALUES ($ligne)');
}

// on ferme la connexion à mysql
mysql_close(); 
?>


J ai egalement essaye avec

 <?php 
include ('dbconnect.php');

while(!fopen('emails.txt' , 'r'))
{
  $ligne = rtrim(fgets('emails.txt'));
 mysql_query('INSERT INTO tempmail (code) VALUES ($ligne)');
}

// on ferme la connexion à mysql
mysql_close(); 
?>


Merci pour votre aide
A voir également:

3 réponses

Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
13 mars 2008 à 08:30
Salut,

Je pense que tu n'utilises pas correctement les fonctions fopen et fgets (voir la doc de php).
Essai plutôt (basé sur l'exemple sur la doc php de fgets)
<?php
// Connexion db 
$handle = @fopen("emails.txt", "r");
if ($handle) {
    while (!feof($handle)) {
        $ligne= rtrim(fgets($handle, 4096));
        mysql_query("INSERT INTO tempmail (code) VALUES ($ligne)");
    } 
    fclose($handle);
}else {
die('impossible d ouvrir le fichier');
}
// Fermeture DB
?>

1
Bonjour,

Merci pour ton aide Dr Zoidberg, mais j avais fais d une autre facon finalement...et beaucoup plus simple :-)

Par curiosité j essaierai ton code demain pour voir le resultat...

Bonne journée


<?php 
include ('dbconnect.php');

$req=mysql_query("LOAD DATA LOCAL INFILE 'emails.txt' INTO TABLE tempmail FIELDS TERMINATED BY '\n'")or die(mysql_error());

echo "<font color=yellow><b>Les donnés ont bien été insérées dans la table</b></font>";

// on ferme la connexion à mysql
mysql_close(); 

?>
1
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 143
14 mars 2008 à 00:44
Hm, moi j'aurai plutôt pensé à une erreur de syntaxe PHP non ?

Au lieu de :

mysql_query('INSERT INTO tempmail (code) VALUES ($ligne)');

Plutôt :

mysql_query("INSERT INTO tempmail (code) VALUES ('".$ligne."')");

Non ? (Attention à différencier simple/double quote)

Et ne pas oublier les quotes autour d'une chaine de caractère.. (si code est en varchar)
1
Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
14 mars 2008 à 11:44
Effectivement, et j'avais essayé de corrigé cette erreur dans mon premier post, mais j'ai oublié les simples quotes où il fallait :-) :
mysql_query("INSERT INTO tempmail (code) VALUES ('$ligne')");
0