IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[CSV] Ecrire dans un fichier TXT à certaine position


Sujet :

Langage PHP

  1. #1
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut [CSV] Ecrire dans un fichier TXT à certaine position
    Bonjour,

    Je veux créer en sortie un fichier txt avec des champs positionnés

    Pour un fichier csv, j'utilise ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    header("Content-Type: application/csv-tab-delimited-table");
    header("Content-disposition: filename=table.csv");
     
    if (!empty($compteur)) 
    {
    	// titre des colonnes
    	$fields = count($resQuery[0]);
    	$titre = array_keys($resQuery[0]);
     
    	$i = 1;
    	while ($i < $fields) 
    	{
    		echo $titre[$i].";";
        	$i = $i + 2;
    	}
    	echo "\n";
     
    	// données de la table
     
    	foreach ($resQuery as $arrSelect) 
    	{
    	   	$i = 1;
        	foreach($arrSelect as $elem) 
    	   	{
        		// ne faire le traitement que si le nombre est impair
        		if ($i%2 == 1)
       			{
       				$elem=utf8_encode($elem);
    	    		echo "$elem;";
    	    	}
    	    	$i++;
    	   	}
    		echo "\n";    	
    	}
    }
    J'ai cherché ici, mais je n'ai rien trouvé.

    Mais pour écrire dans un fichier TXT à une position précise chacun des champs, comment doit-on procéder ?

    Merci d'avance
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  2. #2
    Membre averti Avatar de alceste
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 318
    Points : 356
    Points
    356
    Par défaut
    pour écrire à une certaine position dans un fichier de type texte, il te faut utiliser fseek()

  3. #3
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    La solution de fkseek() ne permet pas d'insérer du texte dans le fichier. Tout caractère écrit a cet endroit remplacera celui qui y était avant, ca ne correspond pas à une "insertion".

    Pour insérer un bout de texte dans un fichier il faut le lire en entier, modifier le contenu en mémoire puis écraser le fichier d'origine.
    On peut aussi lire ligne a ligne et écrire dans un fichier texte temporaire, quand on a terminé on efface l'original et on remplace par le nouveau.

  4. #4
    Membre averti Avatar de alceste
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 318
    Points : 356
    Points
    356
    Par défaut
    Mais pour écrire dans un fichier TXT à une position précise chacun des champs, comment doit-on procéder ?
    dans cette question j'y lis deux choses, écrire dans un fichier, et se positionner à un endroit précis dans celui-ci. je pars du principe qu'il sait écrire dans un fichier, donc je lui donne la solution pour se positionner dans le fichier, qui est d'utiliser la fonction fseek, je réponds donc à sa question.

  5. #5
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Citation Envoyé par alceste Voir le message
    dans cette question j'y lis deux choses, écrire dans un fichier, et se positionner à un endroit précis dans celui-ci. je pars du principe qu'il sait écrire dans un fichier, donc je lui donne la solution pour se positionner dans le fichier, qui est d'utiliser la fonction fseek, je réponds donc à sa question.
    ben non, tu lui donnes la solution pour LIRE a un endroit précis dans un fichier texte, ca ne l'aide en rien à insérer du texte a l'endroit souhaité.

  6. #6
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Je crée un fichier par traitement et je souhaite écrire :

    - un code en position 1
    - une date en position 10
    - un libelle en position 20
    - un nom en position 55

    Etc... et cela sur chaque enregistrement.
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  7. #7
    Membre éclairé
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    Par défaut
    Salut, j'ai eu le meme probleme, je devais ecrire dans un fichier texte ceci:

    nbJoueurs : 2
    typeDePartie : debutant
    joueurActif : -1

    etc...

    Et de temps en temps, je dois pouvoir changer le joueurActif, passer de -1 à 1 puis à 2 etc...

    Pour faire cela, c'est à dire écrire et changer quelquechose, j'utilise la fonction file qui lit un fichier et le met dans un tableau. Je mets à jour le tableau, je supprime le fichier et le réécris avec write

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <?php
     
    $tabFile = file("./parties/fichier.txt");
    $handle0 = fopen("./parties/fichier.txt", 'w');
    fclose($handle0);
     
    // ICI je change mes valeurs dans le tableau $tabFile
    // sachant que tabFile[0] == ligne0 du fichier.
     
    $handle = fopen("./parties/fichier.txt", 'a');
     
    for ($i=0 ; $i<count($tabFile) ; $i++) fwrite($handle, $tabFile[$i]);
    fclose($handle);
    ?>
    J'utilise ça pour remplacer un champ dans un fichier texte.

    Espérant t'avoir aidé...

    ++
    JC
    VELOMASTER, idée cadeau ? un jeu de plateau

    Hummmmm, des donuts !!!!

    Merci de penser à , et et aussi

  8. #8
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Merci jc_cornic,

    Mais je ne comprends pas les réponses.

    Je sais écrire dans un fichier, mais je veux écrire sur un enregistrement à certaine position.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    - un code en position 1
    - une date en position 10
    - un libelle en position 20
    - un nom en position 55
    mais peut-être que cela n'a rien à voir avec l'écriture dans le fichier, mais plutôt dans la préparation d'une variable qui représenterai mon enregistrement et dans laquelle j'aurai écrit à certaine position.
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  9. #9
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    $fichier = fopen($file, "w+");
    $message = "texte";
    $long = longueur souhaité;
    function ecrfich($mess, $long)
    {
    	global $fichier;
     
    	$mess = str_replace("\r\n", " ", $mess); 
     
    	while(strlen($mess)<$long)
    	{
    		$mess.=" ";
    	}
    	if(strlen($mess)>$long)
    	{
    		$mess = substr("$mess", 0, $long);
    	} 
    	fputs($fichier, "$mess");
    }
    Merci et ça fonctionne très bien
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment ecrire dans un fichier txt avec WriteFile?
    Par Art19 dans le forum Langage
    Réponses: 13
    Dernier message: 04/07/2007, 15h50
  2. Ecrire dans un fichier txt en 4gl
    Par patriceguic dans le forum Informix
    Réponses: 2
    Dernier message: 07/05/2007, 20h44
  3. Ecrire dans un fichier .txt
    Par chabRRR dans le forum Langage
    Réponses: 3
    Dernier message: 13/03/2007, 19h30
  4. Ecrire dans un fichier .txt
    Par yinyann86 dans le forum Pascal
    Réponses: 17
    Dernier message: 24/11/2006, 13h36
  5. Ecrire dans un fichier txt sans en effacer le contenu
    Par cari dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 14/12/2005, 18h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo