Problémes de traitement d'un fichier txt avec php

snack16 Messages postés 2 Date d'inscription vendredi 24 avril 2009 Statut Membre Dernière intervention 25 avril 2009 - 24 avril 2009 à 17:49
snack16 Messages postés 2 Date d'inscription vendredi 24 avril 2009 Statut Membre Dernière intervention 25 avril 2009 - 25 avril 2009 à 16:01
salut tout le monde !
je solicite votre aide car j'ai déja passé 2 nuits blanches en essayant de resoudre ce probléme qui est le suivant:
Je prépare mon PFE et le sujet c'est que je doit décortiquer un fichier txt provenant d'une pointeuse et mettre le contenu (code; date; heure) dans deux table la premiere contindra tout les pointages et la deuxieme table sert à sauvegarder que les absent (il faut q'il y est 2 pointages par jours sinon on considére comme absence)  et pour cela j'ai fait ce bout de code qui me parrait juste mais le resultats que j'obtenait sont toujours faux le principe du code c'est de fixé une ligne et vérifier s'il existe une ligne parmi les lignes suivante au 2 premiers champs égaux aux 2 premiers champs de cette ligne fixée je crois que les deux boucle sont mal placé
donc si vous pouvez m'aider pour savoir comment fixé une ligne la comparer avec les reste et ainsi de suite ,je serai reconnaissant
slts,

<?php
@require('fonctions.php');
@require('variables.php');
connexion();
//-----------------------------------------------------------------
// on ouvre le fichier texte que l'on veut charger
$file_name = "pointage.txt";
$myFile = file($file_name);
// make sure the open was successful
if(!($myFile))
{
    print("Impossible d'ouvrir le fichier $file_name ");
    //exit;
}
// count($myfile) donne le nombre de lignes du fichier
$nbline=count($myFile);
$index=0;
while($index < $nbline)
{
    //on utilise les tokens pour séparer chaque morceau de ligne
    // ici le séparateur est le ; et in n'y a que 3 champs
    //sans paramètre pour le second champ (autant de fois token que de champs)
    $token_table[0]=strTok($myFile[$index],";");
    $token_table[1]=strTok(";");
 $token_table[2]=strTok(";");
    $codep = intval($token_table[0]);
    $datep = str_replace("-","",$token_table[1]);
 $datep = intval($datep);
 $timep = $token_table[2];
 $na=0;//na
 $index++;
 $index_d=$index;
 $datep_d =00000000;
 while($index_d < $nbline and $datep_d < $datep)
 {
 $token_table[0]=strTok($myFile[$index_d],";");
    $token_table[1]=strTok(";");
 $token_table[2]=strTok(";");
    $codep_d = intval($token_table[0]);
    $datep_d = str_replace("-","",$token_table[1]);
 $datep_d = intval($datep_d);
 $timep_d = $token_table[2];
 if ($datep_d==$datep and $codep_d==$codep)
 {
 $na++;
 echo islem;
 }
 $index_d++;
 }
 if($na==0)
 {
 mysql_query("INSERT INTO absence
    (code,date) VALUES
    ('$codep_d','$datep_d')");
 }
 mysql_query("INSERT INTO xtraire
    (code,date,heure) VALUES
    ('$codep','$datep','$timep')"); 
}
?>

2 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
25 avril 2009 à 08:28
Salut,

Je n'ai parcouru que rapidement, mais ça me semble fort lourd tout ça.
As tu un exemple de quelques lignes de ce fichier ? Ne peux tu pas utiliser fgetcsv plutôt que srtTok ?
Quel est la taille maximale de ce fichier ?

Cordialement,

Kohntark -
0
snack16 Messages postés 2 Date d'inscription vendredi 24 avril 2009 Statut Membre Dernière intervention 25 avril 2009
25 avril 2009 à 16:01
exemple de quelques lignes du fichier:
code ;date ;heure
1234; 2009-04-25; 7:45
1265; 2009-04-25; 7:56
1112; 2009-04-25; 8:00
   ...       ...                ....
j'ai pu recupérer les chams de chaque ligne dans ma table mais le probléme c'est que je veux comparer chaque ligne avec les autre ligne et pour cela j'ai fait deux boucle l'une pour parcourir toutes ligne et la 2éme boucle while pour comparer avec le reste des ligne donc je fixe une ligne et je la compare avec le reste mais sa marche pas le 2 eme boucle ne s'execute q'une seul fois????
  
0
Rejoignez-nous