Construire un fichier texte

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Construire un fichier texte

par speddy1406 » 11 juil. 2005, 08:56

c'est bon çà fonctionne plus de problème. j'ai changé d'éditeur de texte

par zeus » 08 juil. 2005, 16:40

Dernière réponse que je te donne dans ce post :

le code que je t'ai donné délivre ce format

Maintenant, comme le dit mere-teresa, si tu as encore une question => new post

par mere-teresa » 08 juil. 2005, 16:29

Si tu as un problème précis et déterminé : pose une nouvelle question. Si zeus aime t'aider, continuez comme ça...
Mais je doute qu'un arrivant se tape les 5 pages pour vous aider.

par speddy1406 » 08 juil. 2005, 15:59

Le format qu'il le faut est le premier

par zeus » 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 ?

par zeus » 08 juil. 2005, 13:56

Donne moi un exemple au lieu d'essayer de décrire parce que sinon, on y arrivera jamais

par speddy1406 » 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

par zeus » 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";

par speddy1406 » 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....

par zeus » 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 ?

par speddy1406 » 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

par zeus » 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:

par speddy1406 » 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); 
}
?>

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); 
} 

par zeus » 07 juil. 2005, 16:20

Tu aurais dû :wink: