Construire un fichier texte

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 juil. 2005, 14:20

Découper le jour et la date

Est-ce que tu peut me dire quel est le caractère qu'il y a entre la date et l'heure stp ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 92 Messages

07 juil. 2005, 15:40

le caractère qu'il y a entre la date et l'heure est un simple espace.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 juil. 2005, 15:49

Il faudrait que tu m'envoi un exemple de fichier1 et un de fichier2 afin que je teste chez moi parce que le post traine en longueur et que j'ai l'impression q'on tourne en rond

donc tu m'envoi sur [email protected] :
-ton script php
-fichier1
-fichier2

Tu me confirme ensuite ici que tu m'a envoyé tout ça
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

07 juil. 2005, 16:02

Il faudrait que tu m'envoi un exemple de fichier1 et un de fichier2 afin que je teste chez moi parce que le post traine en longueur et que j'ai l'impression q'on tourne en rond
Je n'osais pas le dire :oops:
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 juil. 2005, 16:20

Tu aurais dû :wink:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

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); 
} 
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 92 Messages

08 juil. 2005, 11:11

çà fonctionne mais le résultat est en ligne au lieu d'être en colonne, est çà ne vient du "rtrim" ?.

De plus j'ai faitune modif dans le code par rapport au nom du fichier crée, je te remets le code avec la modif
<?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("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"; 
     
    //Ecriture de cette ligne dans le fichier texte 
    fputs($fichier, $str_a_insere); 
    //fermeture du fichier texte 
    fclose($fichier); 
}
?>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

08 juil. 2005, 11:13

Comment ça en colonne ?

Quel est le format des fichiers que tu veux obtenir ?

Sinon, pour le nom, c'était pour avoir mes fichiers générés dans un dossier et non pas avec mes fichiers textes :lol:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 92 Messages

08 juil. 2005, 11:22

En colonne c'est-à-dire :

Corrdonnées Valeurs

exemple :

1,57 47,6 27

Ok pour les fichiers textes. Mais çà me convient ainsi

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

08 juil. 2005, 11:24

Mais c'est comme ça qu'il étaient générés chez moi :shock:

Ils sont comment chez toi ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 92 Messages

08 juil. 2005, 11:43

chez moi il est généré en ligne :
coordonnées valeurs coordonnées valeur.....

Mais si je te copie le résultat du fichier dans ce message, il me les met en colonne donc bizarre....

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

08 juil. 2005, 11:47

Change d'éditeur de texte :langue:

Essaye plutôt de remettre le \r
remplace
$str_a_insere = rtrim($a_fichier1[$index])."\t".$a_ligne[5]."\n";

par
$str_a_insere = rtrim($a_fichier1[$index])."\t".$a_ligne[5]."\r\n";
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 92 Messages

08 juil. 2005, 13:25

avec cette nouvelle ligne çà me les met bien en colonne sauf qu'il me met deux fois les colonnes. Et que sur la première et la dernière ligne il me met les résultats en ligne.

J'ai rajouté un \r avec \t mais çà ne change rien

C'est bizarre tout de même

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

08 juil. 2005, 13:56

Donne moi un exemple au lieu d'essayer de décrire parce que sinon, on y arrivera jamais
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

08 juil. 2005, 15:29

Suite à ton mail, j'ai regarder et j'ai 4 formats
1)

Code : Tout sélectionner

1,57 47,6 27 1,91 47,9 33
2)

Code : Tout sélectionner

1,57 47,6 27 1,91 47,9 33
3)

Code : Tout sélectionner

1,57 47,6 27 1,91 47,9 33
4)

Code : Tout sélectionner

1,57 47,6 27 1,91 47,9 33
C'est lequel celui que tu veux ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer