rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[PHP] inserer des donnees dans une table

Jo, le mardi 26 juin 2007 à 16:48:41
Bnjour,
j'ai besoin d'aide pour inserer des donnees provenant d'un fichier texte dans ma base de donnees.

Voila comment est constitué mon fichier texte en gros :

toto1@toto2@@toto4
jean1@jean2@jean3@jean4

ma premiere requete devra ressembler a ca :
INSERT INTO table VALUES ('toto1', 'toto2', '', 'toto4');

et ma deuxieme
INSERT INTO table VALUES ('jean1', 'jean2', 'jean3', 'jean4');

ainsi dessuite tant qu'il y a des lignes dans mon fichier txt.

Deja je suppose que je devrai utiliser un while ("reste des lignes") qq part.
Je ne sais pas comment lire tel ligne et tel donnes et les mettre dans une variable

En gros en francais mon code devrai faire un truc du genre

while (il reste des lignes dans mon fichier)
{
$var1= ce quil y a entre le debut et le 1er @;
$var2= ce quil y a entre le 1er et le 2eme @;
$var3= ce quil y a entre le 2eme et le 3eme @;
$var4= ce quil y a entre le 3eme et la fin (\r\n je suppose);

$sql="INSERT INTO table VALUES ("$var1", "$var2", "$var3", "$var4");
}

Si quelqu'un peut m'aider il me sauverai la vie !!
Merci infiniement d'avance
Configuration: Windows Vista
Opera 9.21
Répondre à Jo  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Reivax962, le mardi 26 juin 2007 à 17:03:38
Bonjour,

http://fr.php.net/manual/fr/function.fgets.php
A priori, je te conseillerai le code suivant :

$fichier = fopen("c:\fichier.txt");
while (!feof($fichier))
{
$uneLigne = fgets($fichier);
$tableauValeurs = explode('@', $uneLigne);
$sql="INSERT INTO table VALUES ('".$tableauValeurs[0]."', '".$tableauValeurs[1]."', '".$tableauValeurs[2]."', '".$tableauValeurs[3]."');
mysql_query($sql);
}
fclose($handle);

Somme toute, c'est très proche de ce que tu imaginais :)

Voilà voilà !

Xavier
Répondre à Reivax962

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Jo, le mardi 26 juin 2007 à 17:23:17
Salut Xavier merci beaucoup pour ta réponse.

Je viens de la tester et y'a un pb.

Normalement ma table (apres les insert) devrait contenir 10 000 enregistrements
Or avec ce code j'en ai 400 000 lol, et en plus tous les champs sont vides !

Y'a un pépin qq part lol

tu sais d'ou ca pourait venir ?

Encore merci :p
Répondre à Jo

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Reivax962, le mardi 26 juin 2007 à 17:28:42
Ca peut venir de ta version de php.
Si tes lignes ne sont pas trop longues (genre pas plus de 1000 caractères par ligne...), essaie de remplacer fgets($fichier) par fgets($fichier, 1024)
Répondre à Reivax962

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Jo, le mardi 26 juin 2007 à 17:42:31
J'ai essayé mais ca ne change rien.

J'ai essayé aussi d'ouvrir un autre fichier texte, qui fait que 4 lignes, et ca me fait la meme chose :
ca m'insert 400000 enregistrements avec tous les champs vides...

mon code :

$fichier = fopen("textes/t.txt");
while (!feof($fichier))
{
$uneLigne = fgets($fichier, 1024);
$tableauValeurs = explode('@', $uneLigne);
$sql="INSERT INTO test VALUES ('".$tableauValeurs[0]."', '".$tableauValeurs[1]."', '".$tableauValeurs[2]."', '".$tableauValeurs[3]."', '".$tableauValeurs[4]."', '".$tableauValeurs[5]."', '".$tableauValeurs[6]."')";
mysql_query($sql);
}

fclose($handle);


mon fichier t.txt :

ANC00001@D00001@xxxxxxxx@594 AV PIERRE & MARIE CURIE@ZI@06700@SAINT LAURENT-DU-VAR@
ANC00002@D00002@xxxxxxxxxx@594 AV PIERRE & MARIE CURIE@@06700@SAINT LAURENT-DU VAR@
PAL00003@D00003@xxxxxxxx@VIA BELLE MONACHE@N 3@28044@VERBANIA@
FAB00004@D00004@xxxxxxxxxx@118 AVENUE DE LA CALIFORNIE@RES LES MIMOSAS@06200@NICE@
ANC00005@D00005@xxxx@594 AV PIERRE & MARIE CURIE@ZI SECTEUR B@06700@SAINT-LAURENT DU VAR@

Autre chose, je ne sais pas si c'est normal mais la variable $handle n'est initialisé nulle part.

Merci encore :D
Répondre à Jo

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Jo, le mardi 26 juin 2007 à 18:01:04
Re.

C'est bon CA MARCHE !!!!!

MERCI MILLE FOIS Xav !!

en fait le pb venait bien de $handle, fallait juste mettre $fichier a la place.

thxxxxxxx

[Résolu]
Répondre à Jo

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Alain42, le mardi 26 juin 2007 à 18:06:48
essayes:

$tableau_fich=file("c:\fichier.txt"); // lit le fichier et le met dans un array
for($i=0; $i< sizeof($tableau_fich); $i++){
$tableauValeurs=explode($tableau_fich[$i]);
$sql="INSERT INTO test VALUES ('".$tableauValeurs[0]."', '".$tableauValeurs[1]."', '".$tableauValeurs[2]."', '".$tableauValeurs[3]."', '".$tableauValeurs[4]."', '".$tableauValeurs[5]."', '".$tableauValeurs[6]."')";
mysql_query($sql);

}
Répondre à Alain42
Logiciels pertinents trouvés dans les téléchargements
Télécharger PHP Edit 0.6PHP Edit - PHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de...Catégorie: PHP
Licence: Freeware/gratuit
Télécharger WAMP Server 2.0cWAMP Server - WAMP5 (WAMP signifiant Windows Apache Mysql PHP) est une plateforme de développement Web sous Windows. Il vous permet de...Catégorie: Serveurs
Licence: Freeware/gratuit
Télécharger PSPad 4.5.2PSPad - PSPad est un excellent éditeur de texte. Il est utile pour travailler sur du simple texte, mais aussi sur du HTML, CSS,...Catégorie: Développement
Licence: Freeware/gratuit
Télécharger Tables multimédia  1,0Tables multimédia - En général les enfants ont tendance à ne pas vouloir étudier et les parents perdent parfois patience à leur apprendre. Peut...Catégorie: Bureautique
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « [PHP] inserer des donnees dans une table »