PHP manip d'un fichier texte bizarre

Résolu/Fermé
kalimbra Messages postés 469 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 octobre 2014 - 10 sept. 2008 à 07:57
hamza_bba Messages postés 78 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 6 août 2009 - 10 sept. 2008 à 09:18
Bonjour,

je dois traiter un fichier texte au format bizarre pour une utilisation sur intranet. Je ne peux absolument pas intervenir sur le formatage du fichier texte qui est le seul truc exportable dans une application propriétaire.

le format est le suivant (pour chaque ligne)

ID tab Heure tab tab tab duree

le probleme c'est que de temps en temps je n'ai pas cette ID ce qui veut dire que cela se référe à la igne précédente en donnant une donnée inversée (ie l'heure n'est plus l'heure d'entrée, mais l'heure de sortie)

ET

si il y a une seconde ligne sans ID, cela veut dire que c'est toujours la dernière id affichée qui est concernée, mais du coup pour une heure d'entrée.

Comment pourrais je traiter ces données, sachant que le but final est de ne garder que ceux qui ont une ID et une heure d'entrée (donc soit une ligne simple, soit deux lignes sans ID en dessous) et des les insérer dans une base de donnée MySQL

j'ai déjà réussi à récupérer les données qui m'intéresse, c'est le traitement de la ou des deux lignes vides qui me pose problème . Je ne sais pas si je dois créer un Array temporaire avant l'insertion, les insérer, effacer si la ligne suivante est vide, puis remettre si la ligne encore suivante est toujours vide, ....

merci de vos conseils..
A voir également:

1 réponse

hamza_bba Messages postés 78 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 6 août 2009 1
10 sept. 2008 à 09:18
bonjour

si j'ai comprend bien le problème voila l'idée ce forme d'un algorithme :

/* initialisation : j'initialise la variable ligne_precedent_vide selon la premiere ligne

si (premier ligne==vide) ligne_precedent_vide=faux;

sinon

ligne_precedent_vide=vrai;

/* j'insert la premier ligne dans le bd

insérer première ligne dans bd();

/* je parcoure le tableau et j'insert les lignes simple et les lignes vide dont la ligne précédent est aussi vide

pour (2eme ligne jusqu'a fin tableau) faire

si (((ligne==vide) et (ligne_precedent_vide ==vrai) ) ou (ligne non vide) ) {

inserer_ligne_mysql(ligne courante);

/* je réaffecte la variable ligne_precedent_vide selon l'etat de la ligne courante

if (ligne==vide)

ligne_precedent_vide=true
sinon

ligne_precedent_vide=false;

passer a la ligne suivante();

}


commentaire :

l'idée est de mettre les données dans un tableau temporaire comme vous avez le dit, et de crée une variable pour sauvegarder l'etat de la ligne précédent (ligne_precedent_vide) puis parcourir le tableau et inserer les lignes simple (càd : ligne !=vide ) et les lignes vide dont la ligne precedent est vide (Càd: (ligne=vide) ou (ligne_precedent_vide=vide))

volia j'espère que j'était clair , essaye de décortiquer l'algorithme pour comprendre mon idée.


a+
1