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.