Traitement de fichier txt en php

parfait18 - 6 août 2012 à 09:12
cs_Mcjo Messages postés 403 Date d'inscription dimanche 12 août 2001 Statut Membre Dernière intervention 3 septembre 2012 - 15 août 2012 à 11:13
Bonjour,
j'ai écrit un code qui se doit de récupérer des données numériques dans des fichiers texte (.txt) qui paraissent avoir la même structure à savoir 150 lignes, 4 lignes d'entête, 12 lignes de description et les données utiles débutent à partir de la ligne 20 jusqu'à la ligne 149. Ce pendant, mon code marche avec un seul de ces fichiers et, avec les autres fichiers, il me renvoi un message d'erreur du genre: invalide offset on line 19. voici mon code:
$file=$_POST['file']; //récupération du fichier d'un formulaire
$fp =  fopen($file,"a"); //ouverture du fichier en écriture et positionnement du   curseur en fin de fichier
$i=19;
$fichier=file($file); // récupération des lignes du fichier dans le tableau $fichier	
$temp = explode(" ", $fichier[$i]);// ligne 19 : ligne problématique
while($temp[0]!=="#")
{
$fichier[$i]=str_replace(",",".",$fichier[$i]);
list($data1,$data2) = explode("\t", $fichier[$i]);
echo $data1."\t".$data2."
";
$i++;
$temp = explode(" ", $fichier[$i]);
}


Pouvez vous m'aider à corriger cette erreur?

4 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
6 août 2012 à 14:31
Bonjour,

C'est souvent parce que tu n'as pas 20 items(n°19=20ième item) dans ton tableau.
Essayes de le faire à la pain, je pense que tu trouveras.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
0
Bonjour,
en fait mon fichier compte 150 lignes dons $fichier[19] existe bien.
est ce que l'instruction
$file=$_POST['file'];
est correcte? en effet, le fichier est chargé via un formulaire avec l'index 'file'. ne devrais je pas plutôt utiliser $_FILES au lieu de $_POST pour récupérer le fichier uploader??? si oui comment m'y prendre alors?

Merci bien
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
7 août 2012 à 20:07
Bonjour,

Je ne pense pas, regardes comment utiliser un fichier téléchargé.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
0
cs_Mcjo Messages postés 403 Date d'inscription dimanche 12 août 2001 Statut Membre Dernière intervention 3 septembre 2012 2
15 août 2012 à 11:13

$i=19; <-- ligne 20 du fichier
$fichier=file($file); // récupération des lignes du fichier dans le tableau $fichier	
$temp = explode(" ", $fichier[$i]);// ligne 19 : ligne problématique


C'est simple ton fichier n'a pas 20 lignes.
0
Rejoignez-nous