Rechercher : dans
Par :

INSERER LES DONNEES FICHIER TXT DANS MYSQL

Dernière réponse le 14 mar 2008 à 11:44:42 JOLIKOLO, le 12 mar 2008 à 23:30:00 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « INSERER LES DONNEES FICHIER TXT DANS MYSQL » dans :
[MS-Dos] Ecrire dans un fichier texte en batch VoirPour écrire dans un fichier texte, il suffit d'utiliser une redirection ">" : echo texte_à_ecrire > fichier_de_sortie.txt Pour écrire à la fin d'un texte existant (concaténation) : echo "écriture a la fin du fichier ">>...
Comment insérer de la musique dans un diaporama VoirLa manipulation pour insérer un son dans un diaporama avec PowerPoint 2007 est assez simple. Ouvrez le logiciel Powerpoint ou le diaporama voulu s’il est déjà créé. Insérer un fichier audio Sélectionner la diapositive de départ de la...
Fichier TXT VoirFormat TXT Un fichier TXT est un fichier texte, c'est-à-dire un simple fichier contenant du texte au format ASCII. Pour ouvrir ou modifier un tel fichier, il suffit d'utiliser le bloc-notes ou un éditeur de texte traditionnel.
Importer et exporter des données sous MySQL VoirImportation et exportation Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant...

1

Dr Zoidberg, le 13 mar 2008 à 08:30:53
  • +1

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
?>

Répondre à Dr Zoidberg

2

JOLIKOLO, le 13 mar 2008 à 22:28:24
  • +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(); 

?>

Répondre à JOLIKOLO

3

chico200987, le 14 mar 2008 à 00:44:20
  • +1

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)

Répondre à chico200987

4

 Dr Zoidberg, le 14 mar 2008 à 11:44:42

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')");

Répondre à Dr Zoidberg