INSERER LES DONNEES FICHIER TXT DANS MYSQL

JOLIKOLO -  
Dr Zoidberg Messages postés 547 Statut Membre -
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 547 Statut Membre 100
 
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
JOLIKOLO
 
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 856 Statut Membre 144
 
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 547 Statut Membre 100
 
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