Suppression partie de texte

SylvieT
Invité n'ayant pas de compte PHPfrance

29 avr. 2011, 11:55

Bonjour,
Ce bout de code me permet d'une part d'écrire le texte contenu dans le tableau $monTab et d'autre part de l'ajouter dans un fichier .txt ($fp).
Lors du click sur le bouton du formulaire, cela supprime à l'écran le texte désiré.

Je ne vois pas comment supprimer également ce texte du fichier txt, pouvez-vous m'aider sur ce problème

Code : Tout sélectionner

<?php for ($i = 1; $i <= $valeur; $i++){ echo"<div id=".$i.">"; echo $monTab[$i]; fwrite($fp, substr($monTab[$i],0)); ?> <form name="suppression" method="post" action=""> <input type="button" value="Supprimer texte n°<?php echo $i ?>" onClick="Suppression(<?php echo $i ?>)" > </form> </div> <?php }//fin for fclose($fp); ?> <!--Fonction qui me permet en javascript de supprimer le texte désiré --> <script language="javascript"> function Suppression(valeur) { document.getElementById(valeur).style.display = 'none'; } </script>

Eléphant du PHP | 245 Messages

29 avr. 2011, 17:53

A la fin de ta page, ajoute :
<form action="enregistre.php" method="POST" name="suppression">
<input type="hidden" name="ligne_a_supprimer" value ="">
</form>
dans ta fonction JS :
 <script language="javascript"> 
   function Suppression(valeur) 
      { 
      //document.getElementById(valeur).style.display = 'none';
document.suppression.ligne_a_supprimer.value = valeur;
document.suppression.submit();
      } 
   </script> 
Page enregistre.php qui se charge d'enregistrer:

$newContent="";

$lines = file($monfichier);
/*On parcourt le tableau $lines et on affiche le contenu de chaque ligne précédée de son numéro*/
foreach ($lines as $lineNumber => $lineContent){	
//echo $lineNumber,' ',$lineContent;
//je ne me rappelle pas s'il faut tester sur $linenumber ou $linenumber +1 ... voir -1 ...
//il faut que tu fasses des tests
if($lineNumber!=$_POST["ligne_a_supprimer"])
	$newContent.=$lineContent;
// je ne sais plus s'il faut ajouter des tabulations :
//$newContent.="\r\n";
}
file_put_contents($monfichier,$newContent);
header("location:".$_SERVER["HTTP_REFERER"]);
Alors fais attention, je le dis de mémoire, il faut faire des tests avant de se lancer...
Tu aussi peux aussi essayer avec fopen(), regarde ici : http://dev.petitchevalroux.net/php/lect ... p.227.html

SylvieT
Invité n'ayant pas de compte PHPfrance

02 mai 2011, 12:30

Merci d'avoir pris le temps de vous pencher sur mon problème.

Après différents tests avec ce bout de code, je m'aperçois qu'il est censé supprimer ligne par ligne (qu'il ne supprime jamais étant donné que la value ne contient rien) .
En testant avec $newContent="HelloWorld" pour me rendre compte où il l'affiche et bien il n'est nul part.

Ce que je cherche c'est supprimer tout le contenu de la div du fichier txt et non une seule ligne.
Je ne vois toujours pas comment procéder.

Eléphant du PHP | 245 Messages

02 mai 2011, 14:31

ok, alors cela dépend de comment tu as construit ton tableau $montab.
C'est à dire quelle est la fonction qui affecte les valeurs $monTab[$i] ?
Est ce le fichier qui est construit d'après le tableau ou l'inverse? c'est cela qu'il faut considérer.

Parce que si ton fichier est construit à partir du tableau :
// $monTab = ton tableau quee tu as créé pour l'affichage
//$valeur, elle aussi elle est définie dans ton code avant ...
//...

$monTabBis = array();
$j=1;
for($i=1;$i<$valeur;$i++){
	
	if($i!=$_POST["numero_a_supprimer"]){
		$monTabBis[$j]=$monTab[$i];
		$j++;
	}
}

//creation du fichier à partir de $monTabBis au lieu de $monTab
//...
Si c'est le contraire, et que le tableau est construit grâce au fichier, c'est qu'il y a des délimiteurs dans le fichier, et dans ce cas ce n'est pas trop dur d'inverser l'algorithme