Traitement de fichier txt en php

Signaler
-
Messages postés
403
Date d'inscription
dimanche 12 août 2001
Statut
Membre
Dernière intervention
3 septembre 2012
-
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

Messages postés
14790
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
15 mai 2021
155
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
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
Messages postés
14790
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
15 mai 2021
155
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
Messages postés
403
Date d'inscription
dimanche 12 août 2001
Statut
Membre
Dernière intervention
3 septembre 2012
2

$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.