Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/07/2007, 16h24   #1
Membre du Club
 
Avatar de cflo91
 
Inscription : mars 2007
Messages : 113
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 113
Points : 41
Points : 41
Par défaut supprimer une ligne dans un fichier

Bonjour,
je voudrais juste savoir comment l'on fait pour supprimer une ligne quand on a son numéro.??

Merci d'avance.
cflo91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2007, 16h27   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Tu ne peux pas supprimer une ligne directement d'un fichier.
Il faut que tu lises tout le fichier ligne a ligne (comme tu le fais dans l'autre post il me semble) ensuite tu crées une sorte de "tampon" dans lequel tu stockes toutes les lignes les unes a la suite des autres. Comme ca, la ligne que tu souhaites enlever, tu ne l'ajoutes pas au tampon.
Et a la fin tu réécris ton tampon dans le fichier a la place de ce qu'il y avait avant.

Si tu veux éviter de mémoriser TOUT le fichier en mémoire, dans ce cas il faut que tu crées un nouveau fichier, que tu écris ligne a ligne dedans (la ligne que tu es en train de lire) sauf celle(s) que tu ne veux pas. Et a la fin tu supprimes le fichier de départ et tu renommes le nouveau fichier pour le remplacer.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2007, 16h31   #3
Membre du Club
 
Avatar de cflo91
 
Inscription : mars 2007
Messages : 113
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 113
Points : 41
Points : 41
voici mon code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
$fic = fopen($fichier, "r" );
 
        for ($i = 1; $i<$num; $i++)// On se place directement à la ligne souhaitée
          { 
		    $string .= fgets($fic);
		  }
		$string .= "define(\"" . $constante . "\", \"" . $nvaleur . "\" );\n";
 
        while (!feof($fic))
          {
            $string .= fgets($fic);
          }
        fclose($fic);
 
        $fic = fopen($fichier, "w+" );
        fputs($fic, $string);
        fclose($fic);
Avant, j'ai récupéré, la valeur de $constante, $num est le numéro de la ligne à "supp/modifié" .

Je n'ai pas trop compris comment je devais faire?
Pouvez vous m'aidez svp.

Merci d'avance
cflo91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2007, 16h37   #4
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Si je comprends bien ton code tu veux remplacer la ligne numéro $num par une ligne que tu crées toi meme? Et actuellement tu arrives a mettre ta ligne mais pas a retirer la précédente?

Si c'est bien le cas, en fait il faut que tu lises une ligne entre ton for et ton while sans la mémoriser dans $string.
Code php :
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
 
<?php
// ouvre le fichier
$fic = fopen($fichier, "r" ); 
 
// lit toutes les lignes jusqu'a celle qu'on veut retirer (sans la lire)
for ($i = 1; $i<$num; $i++)// On se place directement à la ligne souhaitée 
{ 
$string .= fgets($fic); 
} 
 
// il faut lire la ligne a supprimer sans la mémoriser
fgets($fic);
 
// a la place on met la ligne qu'on veut ajouter
$string .= "define(\"" . $constante . "\", \"" . $nvaleur . "\" );\n"; 
 
// puis on lit la fin du fichier
while (!feof($fic)) 
{
$string .= fgets($fic); 
} 
 
// on ferme le fichier puis on écrit la nouvelle version
fclose($fic);   
$fic = fopen($fichier, "w+" ); 
fputs($fic, $string); 
fclose($fic);  
?>
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2007, 16h44   #5
Membre du Club
 
Avatar de cflo91
 
Inscription : mars 2007
Messages : 113
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 113
Points : 41
Points : 41
Merci pour ton aide, ça fonctionne parfaitement.
cflo91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h12.


 
 
 
 
Partenaires

Hébergement Web