PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 19-01-2011 23:38:00

zerodegre
Membre
Inscription : 19-01-2011
Messages : 7

Limiter l'ecriture dans mon .TXT

Je voudrais SVP ameliorer mon code plus bas en voulant ecrire 10 lignes seulement dans mon .TXT et qu'ensuite dés que les 10 lignes sont atteintes supprimer la derniere ligne pour que la nouvelle ligne vienne s'ecrire en 1er et ainsi de suite

Voila mon bout de code que faut t-il que je lui ajoute ?????


$new_ligne = '<img src="'.$log['image'].'" width="120"/>'."\n";
 
// le chemin du TXT
$file = 'vingtdern/vingtdern.txt';
 
// on stocke l'ancien texte
$old_lignes = file($file);

// add les nouvelles lignes au debut du tableau
array_unshift($old_lignes,$new_ligne);

// ressort les lignes du tableau
$new_content = join('',$old_lignes);
$fp = fopen($file,'w');

// ecrit la chaine dans le fichier
$write = fwrite($fp, $new_content);
fclose($fp);

Hors ligne

#2 20-01-2011 06:22:08

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Limiter l'ecriture dans mon .TXT

Cela revient à écrire les 10lignes en partant de la fin ton affaire non ?
Si c'est le cas utilises array_reverse() et supprimes toutes les lignes après la 10eme.

Hors ligne

#3 20-01-2011 08:37:05

zerodegre
Membre
Inscription : 19-01-2011
Messages : 7

Re : Limiter l'ecriture dans mon .TXT

en faite pas trop je voulais que la nouvelle ligne qui arrive prenne la place de la premiere et supprime la 10eme et ainsi de suite , comme ça je reste toujours a 10 ligne


j'ai tenter ceci mais rien n'apparait dans le txt


// add les nouvelles lignes au debut du tableau

array_unshift(array_slice($old_lignes,0,9),$new_ligne);

Dernière modification par zerodegre (20-01-2011 08:49:38)

Hors ligne

#4 20-01-2011 11:26:10

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Limiter l'ecriture dans mon .TXT

Une raison particulière à ce fonctionnement ?
Car cela ne me paraît pas tiptop vu qu'on perds totalement de vu l'ordre des lignes.
La dernière insérée sera la première du fichier (sauf dans le cas nbligne < 10 u_? ) mais la seconde sera la 9eme !

Je me renseigne car si c'est un soucis de conception il faut revoir cela. ^^

Hors ligne

#5 20-01-2011 11:41:53

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Limiter l'ecriture dans mon .TXT

Saluton,
Tu charges ton fichier dans un array, tu ajoutes la nouvelle ligne au début avec array_unshift(), tu supprimes la dernière avec array_pop(), tu écrases ton fichier avec l'array.
C'est une pile FIFO.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#6 20-01-2011 11:42:12

zerodegre
Membre
Inscription : 19-01-2011
Messages : 7

Re : Limiter l'ecriture dans mon .TXT

en faite ce code ci dessous marche tres bien actuellement sauf qu'il n'y a pas de limite, donc arrivé a un certain moment je vais me retrouver avec un TXT tres gros , c'est pour ça que j'aimerais qu'il s'arrete à la dixieme ligne et que ça tourne en boucle

==>exemple : le TXT comporte 10 ligne , il faudrait que la 10eme s'efface pour que la nouvelle ligne se positionne en 1 et ainsi de suite


$new_ligne = 'LE TEXTE'."\n";


// le chemin du TXT

$file = 'vingtdern/vingtdern.txt';

 
// on stocke l'ancien texte

$old_lignes = file($file);
 
// add les nouvelles lignes au debut du tableau

array_unshift($old_lignes,$new_ligne);

// ressort les lignes du tableau

$new_content = join('',$old_lignes);
$fp = fopen($file,'w');


 // ecrit la chaine dans le fichier

$write = fwrite($fp, $new_content);
fclose($fp);

Hors ligne

#7 20-01-2011 11:44:27

zerodegre
Membre
Inscription : 19-01-2011
Messages : 7

Re : Limiter l'ecriture dans mon .TXT

Maljuna Kris a écrit :

Saluton,
Tu charges ton fichier dans un array, tu ajoutes la nouvelle ligne au début avec array_unshift(), tu supprimes la dernière avec array_pop(), tu écrases ton fichier avec l'array.
C'est une pile FIFO.

S'il te plait, Pourais tu m'ecrire ce que cela donnera dans mon code ci dessus ?

merci d'avance

Dernière modification par zerodegre (20-01-2011 12:09:28)

Hors ligne

#8 20-01-2011 15:27:58

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Limiter l'ecriture dans mon .TXT

Je viens de tester ça à la va-vite, et ça a l'air de le faire.

<?php

$new_ligne = 'Ligne11';
 
// on stocke l'ancien texte dans un array

$lignes = file('vingtdern.txt');
 
// add les nouvelles lignes au debut du tableau

array_unshift($lignes,$new_ligne);

// supprimer la dernière ligne

$entropy = array_pop($lignes);

$fp = fopen('vingtdern.txt','w');


$write = fwrite($fp, implode($lignes,"\n"));
fclose($fp);


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#9 20-01-2011 16:05:45

zerodegre
Membre
Inscription : 19-01-2011
Messages : 7

Re : Limiter l'ecriture dans mon .TXT

merci pour tout ça marche impeccable

Hors ligne

#10 20-01-2011 20:10:56

zerodegre
Membre
Inscription : 19-01-2011
Messages : 7

Re : Limiter l'ecriture dans mon .TXT

bonsoir maintenant que tout est ok , je voudrais recuperer par exemple seulement la ligne 3 sur mon acceuil

comment dois je proceder ?

Hors ligne

#11 20-01-2011 21:57:08

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Limiter l'ecriture dans mon .TXT

<?php
$lignes = file('vingtdern.txt');
echo $lignes[2];

Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#12 20-01-2011 22:05:51

zerodegre
Membre
Inscription : 19-01-2011
Messages : 7

Re : Limiter l'ecriture dans mon .TXT

merci beaucoup ça marche impeccable

Hors ligne

Pied de page des forums