par
zeus » 08 juil. 2005, 10:37
Je pense qu'on peut dire [RESOLU] :
J'ai revu le code en affichant régulièrement le contenu des tableaux qu'on avait et je me suis rendu compte qu'on se trompait de tableau au niveau de la récupèration des date
Ensuite, j'ai lu le fichier2 et je me suis rendu compte qu'il y avait des lignes vides donc j'ai modifié le 1er test pour qu'il les évites et n a plus de fichier "assimile_.txt" vide
Ensuite, j'ai étudier les fichiers obtenus et j'ai revu un peu la mise en forme
Dit moi si le résultat te convient sachant que :
- certaines lignes sont vides car pas de valeur dans fichier1
Code corrigé
//Ouverture du fichier 1
$fichier1="coord_station_O3.txt";
$a_fichier1 = file($fichier1);
//Ouverture du fichier 2
$fichier2="O3.txt";
$a_fichier2 = file($fichier2);
//Initialisation des variables de mémorisation
//Derniere station parcouru
$lieu = "";
//Ligne du fichier 1 correspondant à la station
$index = -1;
//On parcours chaque ligne du fichier 2
foreach($a_fichier2 as $num => $ligne) {
if (($num == 0) || ($num == 1) || $ligne == "")
continue;
//J'ai modifié ce test pour ne pas traiter les lignes vides et ne pas créer les fichiers assimile_.txt
//Mise en tableau de la ligne
$a_ligne = explode(";", $ligne);
//Si on change de station
if ($a_ligne[1] <> $lieu) {
//On mémorise la dernière station parcourue
$lieu = $a_ligne[1];
//On met à jour la position de la ligne du fichier 1 à lire
$index++;
}
//On récupère la date (5eme champ) et on la découpe
$a_date = explode(" ", $a_ligne[4]);
//On récupère l'heure (2nd champ) et on la découpe
$a_heure = explode(":", $a_date[1]); // <== J'avais mis $a_ligne donc il récupérais le lieu
//On ne conserve que l'heure
$heure = $a_heure[0];
//Ouverture du fichier assimile_heure.txt avec curseur à la fin pour ne pas écraser le contenu
$fichier = fopen("fichiers/assimile_".$heure.".txt", "a");
//Construction de la ligne contenant la ligne du fichier 1 plus le 6eme champs du fichier 2
$str_a_insere = rtrim($a_fichier1[$index])."\t".$a_ligne[5]."\n";
/*BEAUCOUP D'ERREUR ICI
- Le \r ne sert à rien dans une écriture de fichier texte
- quand on fait un file, il insert un \n à la fin, le rtrim permet de le supprimer
- entre les valeurs du fichier 1, il y a une tablulation, j'en ai mis une entre les valeurs du fichier1 et la valeur du fichier 2
*/
//Ecriture de cette ligne dans le fichier texte
fputs($fichier, $str_a_insere);
//fermeture du fichier texte
fclose($fichier);
}
Je pense qu'on peut dire [RESOLU] :
J'ai revu le code en affichant régulièrement le contenu des tableaux qu'on avait et je me suis rendu compte qu'on se trompait de tableau au niveau de la récupèration des date
Ensuite, j'ai lu le fichier2 et je me suis rendu compte qu'il y avait des lignes vides donc j'ai modifié le 1er test pour qu'il les évites et n a plus de fichier "assimile_.txt" vide
Ensuite, j'ai étudier les fichiers obtenus et j'ai revu un peu la mise en forme
Dit moi si le résultat te convient sachant que :
- certaines lignes sont vides car pas de valeur dans fichier1
Code corrigé
[php]//Ouverture du fichier 1
$fichier1="coord_station_O3.txt";
$a_fichier1 = file($fichier1);
//Ouverture du fichier 2
$fichier2="O3.txt";
$a_fichier2 = file($fichier2);
//Initialisation des variables de mémorisation
//Derniere station parcouru
$lieu = "";
//Ligne du fichier 1 correspondant à la station
$index = -1;
//On parcours chaque ligne du fichier 2
foreach($a_fichier2 as $num => $ligne) {
if (($num == 0) || ($num == 1) || $ligne == "")
continue;
//J'ai modifié ce test pour ne pas traiter les lignes vides et ne pas créer les fichiers assimile_.txt
//Mise en tableau de la ligne
$a_ligne = explode(";", $ligne);
//Si on change de station
if ($a_ligne[1] <> $lieu) {
//On mémorise la dernière station parcourue
$lieu = $a_ligne[1];
//On met à jour la position de la ligne du fichier 1 à lire
$index++;
}
//On récupère la date (5eme champ) et on la découpe
$a_date = explode(" ", $a_ligne[4]);
//On récupère l'heure (2nd champ) et on la découpe
$a_heure = explode(":", $a_date[1]); // <== J'avais mis $a_ligne donc il récupérais le lieu
//On ne conserve que l'heure
$heure = $a_heure[0];
//Ouverture du fichier assimile_heure.txt avec curseur à la fin pour ne pas écraser le contenu
$fichier = fopen("fichiers/assimile_".$heure.".txt", "a");
//Construction de la ligne contenant la ligne du fichier 1 plus le 6eme champs du fichier 2
$str_a_insere = rtrim($a_fichier1[$index])."\t".$a_ligne[5]."\n";
/*BEAUCOUP D'ERREUR ICI
- Le \r ne sert à rien dans une écriture de fichier texte
- quand on fait un file, il insert un \n à la fin, le rtrim permet de le supprimer
- entre les valeurs du fichier 1, il y a une tablulation, j'en ai mis une entre les valeurs du fichier1 et la valeur du fichier 2
*/
//Ecriture de cette ligne dans le fichier texte
fputs($fichier, $str_a_insere);
//fermeture du fichier texte
fclose($fichier);
} [/php]