[résolu] suppression d'une ligne dans un fichier txt

suppression d'une ligne dans un fichier txt [résolu] - PHP - Programmation

Marsh Posté le 09-07-2007 à 18:03:35    

Bonjour, j'ai un fichier txt avec des données.
Je voudrais savoir comment supprimer une ligne (avec un code php )qui contient une donnée précisée dans un formulaire.
 
Merci de votre aide.

Message cité 1 fois
Message édité par jereln le 17-07-2007 à 18:50:58

---------------
N'oubliez pas : je suis débutante en php et access !!! Merci.
Reply

Marsh Posté le 09-07-2007 à 18:03:35   

Reply

Marsh Posté le 09-07-2007 à 19:38:34    

fonctions à utiliser :
fopen fread feof fgets fclose
 
doc pour les utiliser :  
http://fr.php.net/
 
sinon tu cherche un script tout fait :
http://www.google.fr/search?source [...] ogle&meta=

Reply

Marsh Posté le 09-07-2007 à 21:00:18    

Il est nécessaire de réécrire tout le fichier sauf la ligne à supprimer. Il n'y a pas d'autre moyen.

Reply

Marsh Posté le 11-07-2007 à 16:35:15    

Citation :

Il est nécessaire de réécrire tout le fichier sauf la ligne à supprimer. Il n'y a pas d'autre moyen.


 
et concrètement, je fais comment?


---------------
N'oubliez pas : je suis débutante en php et access !!! Merci.
Reply

Marsh Posté le 11-07-2007 à 17:45:24    

$fich_in=fopen('ton_fichier',r); // ouvre ton fichier et place le curseur au début
$fich_out=fopen('fichier_nettoyé',w+); // tu vas sauvegarder dedans
while(! feof($fich_in)) { // tant que le curseur est pas à la fin du fichier
$ligne_en_cours=fgets($fich_in,1024); // lit la ligne ou est le curseur et avance le curseur
if(! strpos($ligne_en_cours,'chaine_recherchée') { // si la ligne ne contient pas la chaine que tu cherches
fwrite($fich_out,$ligne_en_cours); // alors elle est placée dans le fichier de sauvegarde
}
}
fclose($fichier_in); fclose($fichier_out);

 

si tu le souhaites, tu écrases le fichier in avec celui que tu as crée. Pas testé mais c'est de cet ordre...

 



Message édité par rengzehn le 11-07-2007 à 17:46:19
Reply

Marsh Posté le 12-07-2007 à 09:27:24    

merci rengzehn, je vais tester ça et je te tiens au courant.


---------------
N'oubliez pas : je suis débutante en php et access !!! Merci.
Reply

Marsh Posté le 12-07-2007 à 09:30:31    

Sinon, en plus court, mais marche que pour php5 (à cause de file_put_contents) :  

Code :
  1. $ArrayContent = file("ton_fichier" );
  2. unset($ArrayContent[NumLighneASupprimer]);
  3. file_put_contents("ton_fichier", implode('', $ArrayContent));


 
ps : je ne suis pas sûr que le implode soit nécessaire...

Reply

Marsh Posté le 12-07-2007 à 10:30:02    

Je suis pas sur que le numligne soit connu, faut le chercher et parcourir le fichier, de plus si le fichier fait 200 megs, le mettre en array, bof ^^

Reply

Marsh Posté le 12-07-2007 à 10:40:15    

le numligne n'est pas connu, en fait il s'agit d'un mot poster par le biais d'un formulaire


---------------
N'oubliez pas : je suis débutante en php et access !!! Merci.
Reply

Marsh Posté le 12-07-2007 à 10:42:34    

bhen utilise plutot ce que bixibu disait : les instruct. de base sur la gestion des fichiers ça sera instructif ;p

Reply

Marsh Posté le 12-07-2007 à 10:42:34   

Reply

Marsh Posté le 12-07-2007 à 11:20:45    

rengzehn a écrit :

Je suis pas sur que le numligne soit connu, faut le chercher et parcourir le fichier, de plus si le fichier fait 200 megs, le mettre en array, bof ^^


 
Effectivement. En même temps, un fichier txt de 200 Mo, faut y aller quand même. Si t'arrives à cette extrêmité, je pense qu'il vaudrait mieux sérieusement envisager une base de données et rechercher via SQL. Ca ira vraiment plus vite ;)

Reply

Marsh Posté le 12-07-2007 à 11:27:13    

rufo a écrit :

Effectivement. En même temps, un fichier txt de 200 Mo, faut y aller quand même. Si t'arrives à cette extrêmité, je pense qu'il vaudrait mieux sérieusement envisager une base de données et rechercher via SQL. Ca ira vraiment plus vite ;)


 
je travaille réguilierement sur du txt de > 500 megs qui ne peux pas être intégré à un sgbd, et je dois pas être le seul :D

Reply

Marsh Posté le 12-07-2007 à 13:45:51    

par curiosité, ces txt > 500 Mo, ils contiennent quel genre de données?  :ouch:

Reply

Marsh Posté le 12-07-2007 à 15:47:28    

des fichiers d'echange entre des sig propriétaires anciens. des fichiers postscripts. un client qui m'exporte toute sa bdd regulierement pour que je l'integre à notre sgbdr, il n'a qu'un systeme d'export et toutes les tables sont dans un seul fichier et les enregistrements sont melangés donc fichier dont les champs sont non délimité puisqu'il y a des champs différents sur chaque ligne. Faut le passer à travers des cat/grep avant :) c'est la qu'on voit toute le puissance d'un shell ;p l'insee qui nous a filé des gigas de données en txt, des dizaine de milliers de colonnes de variables ou on doit tout remonter dans un sgbdr en recollant les fichiers txt. ça parrait gros mais quelque scripts et c'est les bécannes qui bossent.

Reply

Marsh Posté le 12-07-2007 à 15:52:12    

AMHA, faire ça sur des fichiers aussi gros en php relève de la pure inepsie.
T'utiliserais du perl ça irait trente fois plus vite :o
 
pour rappel: PERL = Practical Extraction and Report Language et c'est typiquement fait pour ce genre de tache.

Reply

Marsh Posté le 12-07-2007 à 20:29:50    

anapajari a écrit :

AMHA, faire ça sur des fichiers aussi gros en php relève de la pure inepsie.
T'utiliserais du perl ça irait trente fois plus vite :o
 
pour rappel: PERL = Practical Extraction and Report Language et c'est typiquement fait pour ce genre de tache.


 
Tu parles à qui ? si c'est à moi, bien sur que je manipule pas ces fichiers avec php, je vois pas ou tu as lu ça :)

Reply

Marsh Posté le 13-07-2007 à 08:49:19    

rengzehn a écrit :

Tu parles à qui ? si c'est à moi, bien sur que je manipule pas ces fichiers avec php, je vois pas ou tu as lu ça :)


[:cupra] c'est vrai qu'a aucun moment tu ne précises... Mais comme on était sur un topic php, j'ai un peu vite fait l'assimilation :à:

Reply

Marsh Posté le 13-07-2007 à 13:52:22    

jereln a écrit :

Bonjour, j'ai un fichier txt avec des données.
Je voudrais savoir comment supprimer une ligne (avec un code php )qui contient une donnée précisée dans un formulaire.
 
Merci de votre aide.


 
 :pt1cable: il l'a bien précisé dans son premier poste  :D  

Reply

Marsh Posté le 13-07-2007 à 14:00:24    

Nan mais c'est pas le même ! Celui qui a besoin de modifier des fichiers en PHP n'est pas celui qui récupère des fichiers de 500Mo !


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 17-07-2007 à 18:34:10    

J'ai testé le script de rengzehn, mais le if pose problème avec le while.
J'ai le message suivant :
Parse error: syntax error, unexpected '{' in ...
 


---------------
N'oubliez pas : je suis débutante en php et access !!! Merci.
Reply

Marsh Posté le 17-07-2007 à 18:43:17    

if(! strpos($ligne_en_cours,'chaine_recherchée') {
 
il manque une )
-> if(! strpos($ligne_en_cours,'chaine_recherchée')) {

Reply

Marsh Posté le 17-07-2007 à 18:50:35    

merci rufo, j'ai regardé pendant un moment, mais je suis passée dessus!
 
ça marche : cool
 
Merci à tous


---------------
N'oubliez pas : je suis débutante en php et access !!! Merci.
Reply

Marsh Posté le 17-07-2007 à 19:31:31    

8 Jours et 21 posts pour ca  :lol:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed