Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1316 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Importer des données d'un fichier .txt dans bdd

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Importer des données d'un fichier .txt dans bdd

n°1745068
jc66
Posté le 11-06-2008 à 20:32:18  profilanswer
 

Bonsoir j'ai actuellement un fichier com.txt avec des valeurs comme ceci:  
 
82;01;1;01;01007;Ambronay;AMBRONAY;01500;1996;2146
82;01;1;17;01008;Ambutrix;AMBUTRIX;01500;595;586
 
 
j'ai creer ma table sql avec tous les champs necessaires à l'importation des données de ce fichier, puis je fait ca:
 

Code :
  1. <?php
  2. // on se connecte à notre base
  3. $base = mysql_connect ('***', '***', '***');
  4.     mysql_select_db('***', $base);
  5. $fichier = fopen("com.txt", "r" );
  6. while (!feof($fichier))
  7. {
  8. $uneLigne = fgets($fichier, 1024);
  9. $tableauValeurs = explode(';', $uneLigne);
  10. $sql="INSERT INTO aaaaa VALUES ('".$tableauValeurs[0]."', '".$tableauValeurs[1]."', '".$tableauValeurs[2]."', '".$tableauValeurs[3]."', '".$tableauValeurs[4]."', '".$tableauValeurs[5]."', '".$tableauValeurs[6]."', '".$tableauValeurs[7]."', '".$tableauValeurs[8]."', '".$tableauValeurs[9]."', '".$tableauValeurs[10]."')";
  11. mysql_query($sql);
  12. }
  13. fclose($fichier);
  14. // on libère l'espace mémoire alloué à cette requête
  15. mysql_free_result ($req);
  16. ?>


j'ai chmodé le fichier com.txt en 777, puis j'execute ma page ou ce trouve le script ci dessus.
J'ai cette erreur:
 
Warning: fopen() [function.fopen]: URL file-access is disabled in the server configuration in /home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web/aa.php on line 6
 
Warning: fopen(http://www.meteo-world.com/com.txt) [function.fopen]: failed to open stream: no suitable wrapper could be found in /home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web/aa.php on line 6
 
Warning: feof(): supplied argument is not a valid stream resource in /home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web/aa.php on line 7
 
Warning: fgets(): supplied argument is not a valid stream resource in /home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web/aa.php on line 9
 
 
 
Si quelqu'un peut m'aider. Merci :)


Message édité par jc66 le 12-06-2008 à 08:23:42
mood
Publicité
Posté le 11-06-2008 à 20:32:18  profilanswer
 

n°1745082
Profil sup​primé
Posté le 11-06-2008 à 21:04:40  answer
 

salut !
 
t'as juste à lire ton erreur, tout est écrit: "URL file-access is disabled in the server configuration"
tu accedes a ton fichier via une url et non un chemin unix...
ton probleme n'est pas une question de droit mais de méthode d'appel à un fichier
 
 
pour le reste tu te compliques bien la vie :
 
http://fr2.php.net/manual/fr/function.fgetcsv.php

n°1745092
jc66
Posté le 11-06-2008 à 21:17:53  profilanswer
 

je peut faire comment alors si je peut pas executer le script sur mon serveur ?

n°1745219
leflos5
On est ou on est pas :)
Posté le 11-06-2008 à 23:19:24  profilanswer
 

En reformulé avec toutes les données :??:

n°1745239
jc66
Posté le 12-06-2008 à 07:17:48  profilanswer
 

je ne comprend pas ce que tu veut dire

n°1745247
skeye
Posté le 12-06-2008 à 08:18:09  profilanswer
 

jc66 a écrit :

je peut faire comment alors si je peut pas executer le script sur mon serveur ?


bien sur que si tu peux l'exécuter ton script. Seulement il faut que le fichier de données soit sur le même serveur, et que tu l'ouvres avec un chemin d'accès local, pas avec son url sur un autre serveur.


Message édité par skeye le 12-06-2008 à 08:18:17

---------------
Can't buy what I want because it's free -
n°1745248
jc66
Posté le 12-06-2008 à 08:22:28  profilanswer
 

il est sur le même serveur
le chemin est le même dossier que le script à la racine.
J'ai mis ce qu'il fallait dans le script
 
$fichier = fopen("com.txt", "r" );
 
et maintenant j'ai cette erreur:
 
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web/aa.php on line 22
 
 
la ligne 22 c'est ca:
 
mysql_free_result ($req);
 
 
je comprend rien là :(


Message édité par jc66 le 12-06-2008 à 08:25:07
n°1745250
skeye
Posté le 12-06-2008 à 08:26:30  profilanswer
 

bah $req existe pas dans ton script là hein.[:dawak]


---------------
Can't buy what I want because it's free -
n°1745390
jc66
Posté le 12-06-2008 à 12:35:09  profilanswer
 

donc si je fait en enlevant mysql_free_result ($req);    
 
J'ai une page blanche, et rien dans la bdd
 

Code :
  1. <?php
  2. // on se connecte à notre base
  3. $base = mysql_connect ('***', '***', '***');
  4.     mysql_select_db('***', $base);
  5. $fichier = fopen("com.txt", "r" );
  6. while (!feof($fichier))
  7. {
  8. $uneLigne = fgets($fichier, 1024);
  9. $tableauValeurs = explode(';', $uneLigne);
  10. $sql="INSERT INTO aaaaa VALUES ('".$tableauValeurs[0]."', '".$tableauValeurs[1]."', '".$tableauValeurs[2]."', '".$tableauValeurs[3]."', '".$tableauValeurs[4]."', '".$tableauValeurs[5]."', '".$tableauValeurs[6]."', '".$tableauValeurs[7]."', '".$tableauValeurs[8]."', '".$tableauValeurs[9]."', '".$tableauValeurs[10]."')";
  11. mysql_query($sql);
  12. }
  13. fclose($fichier);
  14. ?>

n°1745394
jeca
Posté le 12-06-2008 à 12:43:36  profilanswer
 

Bonjour,
 
Une seule requête peut faire l'ensemble, en utilisant 'LOAD DATA INFILE ...' :
http://dev.mysql.com/doc/refman/5.0/fr/load-data.html

mood
Publicité
Posté le 12-06-2008 à 12:43:36  profilanswer
 

n°1745399
jc66
Posté le 12-06-2008 à 12:53:22  profilanswer
 

c'est à dire que je doit mettre "LOAD DATA INFILE" à la place de "INSERT INTO" ???    :??:

n°1745400
skeye
Posté le 12-06-2008 à 12:55:19  profilanswer
 

non. C'est à dire que tu dois lire la doc de LOAD DATA INFILE pour savoir comment l'utiliser.


---------------
Can't buy what I want because it's free -
n°1745414
jc66
Posté le 12-06-2008 à 13:17:40  profilanswer
 

je sent que je me noit.
 
Si je fait comme sur l'exemple que tu me donnes Nazztazz, en adaptant
 

Code :
  1. <?php
  2.       $db = new MySqli(***, ***, ***, ***);
  3.       $stmt = $db->prepare("INSERT INTO aaaaa VALUES ('".$tableauValeurs[0]."', '".$tableauValeurs[1]."', '".$tableauValeurs[2]."', '".$tableauValeurs[3]."', '".$tableauValeurs[4]."', '".$tableauValeurs[5]."', '".$tableauValeurs[6]."', '".$tableauValeurs[7]."', '".$tableauValeurs[8]."', '".$tableauValeurs[9]."', '".$tableauValeurs[10]."')" );           
  4.       $stmt->bind_param('iss', $data[0], $data[1], $data[2]);           
  5.       $handle = fopen("com.txt", "r" );
  6.         while (($data = fgetcsv($handle, 1000, "," )) !== FALSE) {
  7.          $stmt->execute();
  8.   $tableauValeurs = explode(';', $uneLigne);
  9.       }
  10.       $stmt->close(); 
  11.       fclose($handle); 
  12.       $db->close();
  13.       ?>


 
 
j'ai ces erreurs:
Warning: mysqli::mysqli() [function.mysqli-mysqli]: (42000/1044): Access denied for user 'meteo'@'localhost' to database '0' in /home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web/aa.php on line 12
 
Warning: mysqli::prepare() [function.mysqli-prepare]: Couldn't fetch mysqli in /home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web/aa.php on line 13
 
Fatal error: Call to a member function bind_param() on a non-object in /home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web/aa.php on line 14

n°1745424
jc66
Posté le 12-06-2008 à 13:32:41  profilanswer
 

comme celà ?
 
 
 

Code :
  1. <?php
  2.       $db = new MySqli(***, ***, ***, ***);
  3.      $stmt = $db->prepare('INSERT INTO table ($data[1], $data[2], $data[3], $data[4], $data[5], $data[6], $data[7], $data[8], $data[9], $data[10]) VALUES (?,?,?,?,?,?,?,?,?,?);');         
  4.       $stmt->bind_param('iss', $data[1], $data[2], $data[3], $data[4], $data[5], $data[6], $data[7], $data[8], $data[9], $data[10]);           
  5.       $handle = fopen("com.txt", "r" );
  6.         while (($data = fgetcsv($handle, 1000, "," )) !== FALSE) {
  7.          $stmt->execute();
  8.   $tableauValeurs = explode(';', $uneLigne);
  9.       }
  10.       $stmt->close(); 
  11.       fclose($handle); 
  12.       $db->close();
  13.       ?>


 
la j'ai ces erreurs:
 
Warning: mysqli::mysqli() [function.mysqli-mysqli]: (42000/1044): Access denied for user 'meteo'@'localhost' to database '0' in /home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web/aa.php on line 9
 
Warning: mysqli::prepare() [function.mysqli-prepare]: Couldn't fetch mysqli in /home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web/aa.php on line 10
 
Fatal error: Call to a member function bind_param() on a non-object in /home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web/aa.php on line 11


Message édité par jc66 le 12-06-2008 à 13:32:55
n°1745425
skeye
Posté le 12-06-2008 à 13:33:27  profilanswer
 

...et si tu mettais les bons paramètres dans le constructeur de Mysqli ce serait pas mieux?

Message cité 1 fois
Message édité par skeye le 12-06-2008 à 13:33:37

---------------
Can't buy what I want because it's free -
n°1745426
jc66
Posté le 12-06-2008 à 13:35:29  profilanswer
 

skeye a écrit :

...et si tu mettais les bons paramètres dans le constructeur de Mysqli ce serait pas mieux?


 
 
les *** c'est  pour cacher mes codes ici sur le forum    ;)  

n°1745429
skeye
Posté le 12-06-2008 à 13:39:36  profilanswer
 

jc66 a écrit :


 
 
les *** c'est  pour cacher mes codes ici sur le forum    ;)  


...en attendant le message dir que l'utilisateur 'meteo'@'localhost' n'a pas le droit de se connecter à la base '0' [:moule_bite]


---------------
Can't buy what I want because it's free -
n°1745442
jc66
Posté le 12-06-2008 à 14:05:10  profilanswer
 

mes codes sont corrects.  J'y suis plus du tout là :(

n°1745443
skeye
Posté le 12-06-2008 à 14:06:40  profilanswer
 

non ce n'est pas correct, il n'arrive pas à se connecter à la base là.


---------------
Can't buy what I want because it's free -
n°1745448
jc66
Posté le 12-06-2008 à 14:12:07  profilanswer
 

je met
 
 
$db = new MySqli(localhost, monlogin, monpass, mabase);

n°1745451
skeye
Posté le 12-06-2008 à 14:15:19  profilanswer
 

jc66 a écrit :

je met
 
 
$db = new MySqli(localhost, monlogin, monpass, mabase);


 
et ta base s'appelle '0'?[:pingouino]


---------------
Can't buy what I want because it's free -
n°1745452
jc66
Posté le 12-06-2008 à 14:16:34  profilanswer
 

skeye a écrit :


 
et ta base s'appelle '0'?[:pingouino]


 
 
bein non, j'ai pourtant mis le bon nom


Message édité par jc66 le 12-06-2008 à 14:16:40
n°1745455
skeye
Posté le 12-06-2008 à 14:19:26  profilanswer
 

Bon, je laisse tomber moi.[:dawa]
Ton machin n'arrive pas à se connecter, point.


---------------
Can't buy what I want because it's free -
n°1745459
jc66
Posté le 12-06-2008 à 14:24:47  profilanswer
 

mon fichier est un fichier.php   et je l'appelle dans mon navigateur firefox.   Les codes c'est sur et certains ils sont correct, j'ai plusieurs pages qui fonctionnent avec sur mon site

n°1745464
jc66
Posté le 12-06-2008 à 14:30:20  profilanswer
 

Code :
  1. <?php
  2.       $db = new MySqli(localhost, max123, monmotdepasse, maxa-sitefr);
  3.      $stmt = $db->prepare('INSERT INTO aaaa ($data[1], $data[2], $data[3], $data[4], $data[5], $data[6], $data[7], $data[8], $data[9], $data[10]) VALUES (?,?,?,?,?,?,?,?,?,?);');         
  4.       $stmt->bind_param('iss', $data[1], $data[2], $data[3], $data[4], $data[5], $data[6], $data[7], $data[8], $data[9], $data[10]);           
  5.       $handle = fopen("com.txt", "r" );
  6. while (($data = fgetcsv($handle, 5000, ";" )) !== FALSE) {
  7.    $stmt->execute();
  8. }
  9. $stmt->close();
  10. fclose($handle);
  11. $db->close();
  12. ?>


Message édité par jc66 le 12-06-2008 à 14:30:41
n°1745485
jc66
Posté le 12-06-2008 à 14:51:33  profilanswer
 

merci à toi :)
 
 
$stmt->bind_param('ssssssssss', $data[0], $data[1], $data[2], $data[3], $data[4], $data[5], $data[6], $data[7], $data[8], $data[9]);
 
je voit pas à quoi ca sert  les sssssss  ?


Message édité par jc66 le 12-06-2008 à 14:51:58
n°1745490
jc66
Posté le 12-06-2008 à 14:56:46  profilanswer
 

j'ai lu, mais avec le traducteur google faut comprendre  
 
 Bind variables pour les marqueurs de paramètres dans l'instruction SQL qui a été adoptée à mysqli_prepare ().
  :heink:  
 
 
et j'ai justement une erreur a cette ligne, donc je cherche d'ou ca vient.
 
Fatal error: Call to a member function bind_param() on a non-object in /home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web/aaa.php on line 24
 
Les variable ca a l'air bon, donc je pense que cavient des ssssssssss  , mais pas sur   :(
 

Message cité 1 fois
Message édité par jc66 le 12-06-2008 à 14:57:18
n°1745493
skeye
Posté le 12-06-2008 à 14:58:53  profilanswer
 

jc66 a écrit :


 
Fatal error: Call to a member function bind_param() on a non-object in /home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web/aaa.php on line 24
 


ça, ça veut dire que prepare() a échoué.


---------------
Can't buy what I want because it's free -
n°1745503
jc66
Posté le 12-06-2008 à 15:12:36  profilanswer
 

exact !  après correction je n'ai plus aucun message d'erreur, mais juste une page blanche, et rien dans la bdd


Message édité par jc66 le 12-06-2008 à 15:12:59
n°1745507
skeye
Posté le 12-06-2008 à 15:24:12  profilanswer
 

envisage de récupérer el retour de execute() alors.[:moule_bite]


---------------
Can't buy what I want because it's free -
n°1745531
jc66
Posté le 12-06-2008 à 16:02:32  profilanswer
 

je suis perdu  :pfff:

Message cité 1 fois
Message édité par jc66 le 12-06-2008 à 16:02:40
n°1745534
skeye
Posté le 12-06-2008 à 16:04:56  profilanswer
 

jc66 a écrit :

je suis perdu  :pfff:

 


On va pas te tenir la main indéfiniment hein...

 

http://fr.php.net/manual/en/mysqli-stmt.execute.php

 
Citation :


Return Values

 

Returns TRUE on success or FALSE on failure.

 

http://fr.php.net/manual/en/mysqli-stmt.error.php


Message édité par skeye le 12-06-2008 à 16:05:16

---------------
Can't buy what I want because it's free -
n°1745536
jc66
Posté le 12-06-2008 à 16:06:46  profilanswer
 

Désolé de vous ennuyer.


Message édité par jc66 le 12-06-2008 à 16:29:44
n°1745544
jeca
Posté le 12-06-2008 à 16:25:52  profilanswer
 
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Importer des données d'un fichier .txt dans bdd

 

Sujets relatifs
type d'acces dans un fichier binaire en C[MySQL] Alimentation auto d'une base de données
Parser un fichier XML[Excel VBA]_Importer un fichier texte
SQL Server : boucle sur une table et affichage[MySQL] Importer des données venant d'un fichier texte.
[JSP] importer des données contenues dans un fichier Excelimporter des données d un fichier vers mysql
Importer un fichier *.txt dans une base de données Access 2000[Delphi] importer un fichier .xls dans une base de données
Plus de sujets relatifs à : Importer des données d'un fichier .txt dans bdd


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR