Modifier et supprimer dans un fichers en php [Résolu]

Signaler
Messages postés
65
Date d'inscription
lundi 20 juin 2016
Statut
Membre
Dernière intervention
30 juillet 2020
-
Messages postés
29606
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 septembre 2020
-
Bonjour,
Je travaille sur les fichiers en ce moment et j'essaie qu'on puisse modifier mon fichier mais aussi pouvoir supprimer quelque chose a l'intérieur, malheureusement ca fais quelques jours que j'essaye cela mais je n'y arrive toujours pas.

Merci

fa23

4 réponses

Messages postés
65
Date d'inscription
lundi 20 juin 2016
Statut
Membre
Dernière intervention
30 juillet 2020

Voici mon code au complet
<!DOCTYPE html>
<html>
<head>
	<title>Les fichiers PHP</title>
</head>
<body>
	<form method="POST">
		<b><br /><p><font size="10">Les fichiers en PHP</p></font></p><br /></b>
		<b>Nom : </b><input type="text" name="nom" required="required"><br /><br />
		<b>Prénom : </b><input type="text" name="prenom" required="required"><br /><br />
		<b>Numéro de téléphone : </b><input type="tel" name="numtel" required="required"><br /><br />
		<input type="submit" name="envoi" value="Envoyez">

		<?php  
			error_reporting(E_ALL & ~E_NOTICE);
			$nom = $_POST['nom'];
			$prenom = $_POST['prenom'];
			$num = $_POST['numtel'];

			if ($nom && $prenom && $num)
			{

				$ouvre = fopen("fichier.txt", "a+");
				$nom.="*";
				$prenom .="*";
				$num .= "*";
				fwrite($ouvre, $nom);
				fwrite($ouvre, $prenom);
				fwrite($ouvre, $num);
				fclose($ouvre);
			}
		?>
	
	</form>
	<br/><a href="affichecontact.php" >Afficher les contacts</a><br /><br />
	<a href="accueil.php">Accueil</a>

</body>
</html>
Messages postés
65
Date d'inscription
lundi 20 juin 2016
Statut
Membre
Dernière intervention
30 juillet 2020

<!DOCTYPE html>
<html>
<head>
 <title>Affichage des contacts</title>
</head>
<body>
 <table border='30' cellpadding="12" cellspacing="2" width="10%" align="CENTER">
 <form>
 <?php 

 $ouvre = fopen("fichier.txt","r"); 
 
 while (!feof ($ouvre)) 
  { 

   $lecture = fgets ($ouvre, 4096); 
   $donnee = explode ("*",$lecture); 
   $combien = count ($donnee)-1; 
   $compteur = 0;
  
   $fichier = file("fichier.txt"); 

   sort($fichier, SORT_NATURAL | SORT_FLAG_CASE);

   foreach ($fichier as $ligne)
   {
       
       $donnee = explode ("*", $ligne); 
       foreach ($donnee as $valeur);
          echo "$valeur";

   }

   echo "<tr><th>Nom</th>";
   echo "<th>Prenom</th>";
   echo "<th>Numéro de téléphone</th>";
   echo "</tr>";
   echo "<tr>"; 
  
   
   for ($i=0;$i<$combien;$i++) 
    { 

     
     $compteur++;
   
   echo "<td>"; 
     echo $donnee[$i], "<br />";
     echo "</td>";

     if ($compteur == 3)
     {
      $compteur = 0;
      echo "<tr></tr>";
     }

    }
   echo "</tr>";

   
 }

 fclose($ouvre); // fermeture

 ?>

 


</form>
</table>
</body>
<footer>
 <br /><center><a href="fichiers.php" >Ajouter un contact</a><br /><br />
 <a href="accueil.php">Accueil</a></center>
</footer>
</html>
Messages postés
29606
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 septembre 2020
2 792
Bonjour,

Avant tout, commence par activer l'affichage des erreurs PHP et suis les quelques conseils donnés ici.
https://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code


Ensuite, si tu ne parviens toujours pas à réaliser ton script, poste le nous ( en utilisant les balises de code )
Explications concernant les balises de code : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Pense également à expliquer en détail ( code à l'appui ) le souci rencontré et ce que tu cherches à faire.
pour l'instant.. ta question ne permet pas de comprendre ton problème.



Messages postés
65
Date d'inscription
lundi 20 juin 2016
Statut
Membre
Dernière intervention
30 juillet 2020

Désolé quand tu était en train de me répondre, j'étais en train d'insérer mon code justement que tu peux retrouver juste au dessus et donc mon problème c'est que j'aimerais qu'on puisse modifier le prénom, le nom ou le numéro de téléphone dans le fichier et aussi pouvoir supprimer quelque chose dans le fichier
Messages postés
29606
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 septembre 2020
2 792 >
Messages postés
65
Date d'inscription
lundi 20 juin 2016
Statut
Membre
Dernière intervention
30 juillet 2020

J'ai bien vu que tu avais mis le code pendant que je répondais.
Mais comme tu as pu le lire dans ma réponse.... je t'ai donné des liens à suivre.

Concernant ton code, hormis lire et écrire il ne fait rien d'autre.
Où as tu essayé de faire la modification ou la suppression ?
Car pour modifier ou supprimer... tu vas devoir recharger la totalité de ton fichier dans un array ou dans une string, faire une "recherche" puis retirer cette ligne de ta variable avant de réécrire complètement le fichier.

Mais quit à stocker des données dans un fichier, utilise un format facilement exploitable tel que le JSON

ou alors.. si tu veux faire un CSV ... utilise un "vrai" séparateur comme la virgule. A ce moment là, tu auras des fonctions php spécialement prévues pour fonctionner avec du csv.
Messages postés
65
Date d'inscription
lundi 20 juin 2016
Statut
Membre
Dernière intervention
30 juillet 2020

La première partie du code sert a écrire dans le fichier et la deuxième partie sert a afficher le contenu du fichier
Messages postés
65
Date d'inscription
lundi 20 juin 2016
Statut
Membre
Dernière intervention
30 juillet 2020

Voici mon code pour la modification que j'ai essayer de faire, en ce qui concerne la suppression je prefere faire la modification avant

<!DOCTYPE html>
<html>
<head>
 <title>Modifier un contact</title>
</head>
<body>

Que voulez vous remplacer ? <input type="text" name="remplace">
    
  <form method="POST"> 
  
  <?php 
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
$ouvre=fopen("fichier.txt","r"); 

  $remplacer = $_POST['remplace'];
   
   while (!feof ($ouvre)) 
   {  
    $lecture = fgets($ouvre, 4096); 
    $donnee = explode("*",$lecture); 
    $combien = count($donnee)-1; 
   
    for ($i=0;$i<$combien;$i++) 
    {  
     
     if (ereg("$lecture",$donnee[$i])) 
      {
       $donnee[$i]=str_replace("$remplacer", "2°", $donnee[$i]);
      }
       
     $liste_modif.=$donnee[$i]."*"; 
    }

  } 

  fclose($ouvre); // fermeture 
  
  $ouvre=fopen("fichier.txt","w+"); 
  fwrite($ouvre,$liste_modif); 
  fclose($ouvre); 

  ?>
   
   

</form>
</body>
</html>
Messages postés
29606
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 septembre 2020
2 792 >
Messages postés
65
Date d'inscription
lundi 20 juin 2016
Statut
Membre
Dernière intervention
30 juillet 2020

Toi tu n'as pas lu comment fonctionne str_replace
str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] ) : mixed

$search => VALEUR CHERCHEE (celle que tu veux remplacer )
$replace => VALEUR A UTILISER POUR LE REMPLACEMENT
$subject => TEXTE QUI CONTIENT EVENTUELLEMENT LA VALEUR A RECHERCHER/REMPLACER

Pour l'instant tu n'as qu'un seul input .... qui, d'après ce que je comprend, est la valeur à remplacer....... mais tu veux le remplacer par quoi ?
Messages postés
65
Date d'inscription
lundi 20 juin 2016
Statut
Membre
Dernière intervention
30 juillet 2020

En gros, je demande a l'utilisateur qu'est ce qu'il veut remplacer soit le nom , le prénom ou le numéro de téléphone. Ensuite, je demande quel nom, prénom ou numéro de téléphone qui veut remplacer et ensuite par quoi il veut le remplacer et après une fois que cela est fait je veux que la modification soit fait aussi dans le fichier
Messages postés
29606
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 septembre 2020
2 792 >
Messages postés
65
Date d'inscription
lundi 20 juin 2016
Statut
Membre
Dernière intervention
30 juillet 2020

sauf que...il n'y à pas toutes ces étapes dans ton code....
Messages postés
65
Date d'inscription
lundi 20 juin 2016
Statut
Membre
Dernière intervention
30 juillet 2020

Ouais c'est parce que j'ai pas réussir a le faire et quand ça fonctionne pas je supprime
Messages postés
29606
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 septembre 2020
2 792 >
Messages postés
65
Date d'inscription
lundi 20 juin 2016
Statut
Membre
Dernière intervention
30 juillet 2020

Ouais.. ben.. si tu ne nous montres que du code partiel... on ne peut pas t'aider à le corriger.
Donc reviens nous voir avec ton code complet et en ayant bien pris soin d'appliquer les conseils données ici : https://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Et j'insiste... pourquoi faire un fichier text avec des séparateurs "*" alors que :
Il existe le format CSV
Il existe (encore mieux) le format JSON
Il existe ( encore encore encore mieux....) les Bases de données...