Extraction de données a partir d'un fichier texte

cs_bomberman17 Messages postés 4 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 20 janvier 2005 - 19 janv. 2005 à 17:08
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 - 20 janv. 2005 à 15:16
URGENT!!

Salut tous le monde!

J'ai un fichier texte avec un certain nombres d'informations séparées
par une virgule.Les informations correspondent a des champs d'un base
de données.J'aurai besoin de créer un fichier en php qui me permettrai
de tranferer les données du fichier texte vers une base de données
mySql et je ne sais pa du tout par où commencez,en plus,je suis assez
débutant en php :( .Si quelqu'un a une idée,n'hésitez pas a me la faire
parvenir rapidement.Merci d'avance pour l'aide que vous pourrez
m'apportez.a+

5 réponses

arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
19 janv. 2005 à 17:40
Tu peux utiliser la fonction explode pour séparer les lignes et en suite les colonnes de ton fichier texte. Pour ajouter dans ta base, utilises mysql_query avec une requête "INSERT..."
ça donne un truc du genre :

$ficTxt="chemin de ton fichier texte";
$table="nom de la table où insérer les données";
if (file_exists($ficTxt))
{
$idFic=fopen($ficTxt,"rb");
$contenu=fread($idFic, filesize($ficTxt));
fclose($idFic);
$Tcontenu=explode("\n",$contenu);
foreach($Tcontenu as $numL=>$ligne)
{
$Tligne=explode(";",$ligne);
$req ="INSERT INTO $table VALUES (";
foreach($Tligne as $numCol=>$val)
{ $req.="'$val',"; }
mysql_query(substr($req,0,-1).")");
}
}


Pour faire ça plus proprement, tu peux aussi voir la fonction fgetcsv()
http://fr2.php.net/manual/fr/function.fgetcsv.php
au lieu des "explode()".

Arnaud
0
cs_bomberman17 Messages postés 4 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 20 janvier 2005
19 janv. 2005 à 18:53
Merci pour ton aide.je teste ça dès demain matin au boulot. ;)
Merci
0
cs_bomberman17 Messages postés 4 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 20 janvier 2005
20 janv. 2005 à 12:34
j'ai essayé avec ton code mais apparament il y a vai un truc qui ne
passait et faut dire que j'ai du mal aussi lol.Donc j'ai opter pour la
fonction fgetcsv() voilà mon script.Par contre j'ai pa encore géré
l'insertion.Merci pour ton aide.

<?

//je récupère le nom du fichier saisie dans un champs

$ficTxt=$nomFichier.".txt";

echo ("le nom du fichier est ".$ficTxt.".");

echo("
");

echo ("Le nom de la table est ".$table.".");

$row = 1;

$fp = fopen ($ficTxt,"r");

while ($data = fgetcsv ($fp, 10000, ",")) {

$num = count ($data);

print " $num champs dans la ligne $row:
\n";

$row++;

for ($c=0; $c < $num; $c++) {

print $data[$c] . "
\n";

}

}

fclose ($fp);



?>
0
cs_bomberman17 Messages postés 4 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 20 janvier 2005
20 janv. 2005 à 14:32
arf,g une erreur.Une fois que j'éxécute mon code et que j'ai affiché le
résultat dans une page html,il m'affiche un message d'erreur en fin de
page==>Fatal error: Maximum execution time of 30 seconds
exceeded in c:\program files\easyphp\www\diago
agenda\test_transfert.php on line 22.

Quelqu'un aurati-il une idée sur l'objet de l'erreur.merci pour votre aide.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
20 janv. 2005 à 15:16
Sur le fond :
J'ai essayé ton code avec un fichier bien formé, il n'y a pas eu de problème. L'erreur est peut-être plus loin dans ton code. Tu peux essayer de mettre un exit; juste après ton fclose($fp); pour voir si l'erreur apparait tjs.

Sur la forme :
C'est dommage, en recopiant le code à partir du manuel php, tu as glissé quelques erreurs :
- il faut utiliser "<?php" plutôt que "<?"
- il faut utiliser "
" plutôt que"
"
- l'utilisation de "!==FALSE" n'est pas inutile, c'est pour continuer le parcours même si une ligne est vide


- toutes les balises ouvertes doivent être refermées => il faut laisser la balise "

"


- pour plus de cohérence et de lisibilité dans ton code, essaye d'utiliser soit print("texte"); soit echo "texte"; mais évite, tant que faire ce peut, d'employer les 2
0
Rejoignez-nous