Rechercher : dans
Par :

[PHP] inserer des donnees dans une table

Dernière réponse le 26 jun 2007 à 18:06:48 Jo, le 26 jun 2007 à 16:48:41 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [PHP] inserer des donnees dans une table » dans :
Manipulations élémentaires des tableaux sous MatLab VoirSommaire I. Stockage des tableaux II. L'indexation linéaire II.1. Accéder à un élément d'un tableau en utilisant l'indexation linéaire II.2. Passer d'une indexation à l'autre II.2.1. La fonction ind2sub II.2.2. La fonction sub2ind III. La...
Décaler les éléments d'un tableau (Rotation) -Récursivité- VoirVoici une procédure récursive qui permet de décaler tous les éléments d’un tableau d’une position à droite à partir de la position p Procedure Decaler (Var t : Tab; p, n : integer); Begin If p
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...
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

Reivax962, le 26 jun 2007 à 17:03:38
  • +1

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

Jo, le 26 jun 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

Reivax962, le 26 jun 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

Jo, le 26 jun 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

Jo, le 26 jun 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

 Alain42, le 26 jun 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