Manipulation de fichier - PHP - Programmation
Marsh Posté le 06-02-2007 à 15:50:44
Ton fichier est sous quelle forme?
Ce genre là :
Dupont;Jean;AutreInfos |
Si oui, moi je ferais un file_get_contents() pour récupérer simplement tout le contenu du fichier, puis un double explode sur \n et ;.
Code :
|
Il est ensuite très simple de chercher le nom de celui que l'on veut supprimer dans le tableau ainsi obtennu.
Enfin pour réécrire le tableaux, imploder le tout!
Marsh Posté le 06-02-2007 à 15:53:51
sinon pour du csv ya aussi :
http://fr.php.net/fgetcsv
http://fr.php.net/fputcsv
Marsh Posté le 06-02-2007 à 17:13:34
[quotemsg=1511432,2,219001]Ton fichier est sous quelle forme?
Ce genre là :
Dupont;Jean;AutreInfos |
Oui, le fichier est sous cette forme.
Marsh Posté le 06-02-2007 à 18:13:15
Ok, bon alors ma méthode peut fonctionner. mais ce n'est pas forcément la meilleur et elle peut poser des problèmes de mémoire si le fichier est très volumineux.
Marsh Posté le 07-02-2007 à 14:39:37
Mon problème persiste encore:
voici en détail ce qui se passe
Le fichier se présente dans la forme initiale suivante:
aaaa;bbbb;cccc;dddd
xxxx;zzda;azdaz;azrffzefzef
szddqdq;dd;zd;zdazd
Ce que je veux, c'est quand je $_POST la première valeur d'une ligne par exemple xxxx de la ligne xxxx;zzda;azdaz;azrffzefzef toute la ligne disparaisse.
Ce qui donnerait:
aaaa;bbbb;cccc;dddd
szddqdq;dd;zd;zdazd
Hors avec mon code actuel
Code :
|
j'ai pour résultat:
aaaa;bbbb;cccc;dddd
;zzda;azdaz;azrffzefzef
;szddqdq;dd;zd;zdazd;
Soit la suppression de xxxx uniquement et non pas toute la ligne, par ailleurs il y a un ";" qui s'insère dans la ligne suivante.
Comment faire pour obtenir le résultat (lorsque je demande de supprimer la ligne dont le premier élement est xxxx):
aaaa;bbbb;cccc;dddd
szddqdq;dd;zd;zdazd
Je continue de faire de nouvelles combinaisons, pour le moment cela ne fonctionne pas.
Merci.
Marsh Posté le 07-02-2007 à 14:54:48
pourquoi tester tous les éléments d'une ligne alors que c'est le premier élément qui t'interesse ?
il y a plus simple : si la ligne commence par "xxxx;" alors tu supprimes, donc pas besoin de explode, ereg ...etc
Marsh Posté le 07-02-2007 à 15:08:30
Salut,
j'ai un peut simplifié
if (isset($_GET['effacer']) && isset($_GET['nom1']))
{
if(file_exists("clients.txt" )) {
$file = file("clients.txt" ); // conserve les sauts a la ligne
foreach($file as $line) {
if(substr($line, 0, strlen($nom1)) != $nom1) {
$new .= $line; //on ne garde que les lignes qui ne commencent pas par $nom1
} else echo "<h2>Client ",$_GET['nom1']," effacé </h2> ";
}
fwrite(fopen("clients.txt","w+" ), $new);
}
else {echo "fichier inaccessible";}
}
tu peux remplacer le strlen($nom1) par une recherche de la position du 1er ";"
Marsh Posté le 07-02-2007 à 15:31:36
tu vas effacer toutes les lignes qui commencent par "xxxx",
à mon avis il ne faut effacer que les lignes qui commencent par "xxxx;"
Marsh Posté le 07-02-2007 à 15:57:23
ben
if(substr($line, 0, strlen($nom1)+1) != $nom1 . ";" )
ou comme je disais avec la recherche du 1er ";" selon les gouts ^^
if(substr($line, 0, strpos($line, ";" )) != $nom1)
Marsh Posté le 09-02-2007 à 15:24:48
hardcoregamer a écrit : ben if(substr($line, 0, strlen($nom1)+1) != $nom1 . ";" ) ou comme je disais avec la recherche du 1er ";" selon les gouts ^^ if(substr($line, 0, strpos($line, ";" )) != $nom1) |
Salut;
voici une solution qui a finalement marché:
Code :
|
Marsh Posté le 06-02-2007 à 15:33:54
Bonjour;
Je voudrais savoir comment faire pour parcourir un fichier.txt pour trouver une donnée puis la supprimer.
Voici ce que j'ai fait mais cela ne fonctionne pas.
Si qq1 a des informations, elles sont les bienvenues.
Merci.