begin process at 2012 05 31 17:51:58
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

supprimer ligne fichier texte


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

supprimer ligne fichier texte

mardi 12 octobre 2010 à 13:33:32 | supprimer ligne fichier texte

sly784965

Bonjour,

j'ai le code suivant qui me permet d'afficher le contenu du fichier "affichage.php" via une boucle while :
Code PHP :
<?php
                                //Lecture séquentielle du fichier et affichage, ligne par ligne du contenu du fichier "affichage.txt":  
                                $fic = fopen ("affichage.txt" , "r");
                                $tab_ligne = file('affichage.txt'); // place le fichier dans un tableau
                                $nb = count($tab_ligne);
                                $i=0;
                                                                   
                                    while ($i<$nb)
                                       {
                            ?>
                                <tr><td><?php echo $tab_ligne[$i]; ?> </td>
                                    <td><input type="button" name="supprimer" value="supprimer" ></td>
                                </tr>    
                            <?php            $i++;
                                        }
                                      fclose ($fic);

                            ?>


Le problème est que je ne sais pas comment faire pour que lorsque je clique sur le bouton supprimer correspondant a un enregistrement, cet enregistrement soit supprimer de mon fichier texte !!

Merci de m'aider

sly
mercredi 13 octobre 2010 à 00:38:59 | Re : supprimer ligne fichier texte

007Julien


    Il s'agit sans doute d'un extrait de la pageaffichage.php destiné à traiter le fichier affichage.txt ?
    Les fopen et fclose (et la variable $fic) sont inutiles, le file est suffisant pour lire un fichier texte disponible sur le serveur.
    Ne serait-il pas plus utile de rassembler le tout, plutôt que dans un tableau, dans un formulaire à construire progressivement (et à éditer en une seule fois) pour le soumettre (avec méthode et action) ?
    Alors des cases à cocher repérées par des noms indicés permettraient de distinguer les lignes à supprimer en cliquant sur un unique bouton submit.

mercredi 13 octobre 2010 à 09:20:43 | Re : supprimer ligne fichier texte

sly784965

Oui il s'agit bien de la page visant à traiter le fichier affichage.txt. Dans mon cas le formulaire n'a aucune utilité.
A chaque affichage d'une ligne de mon fichier txt, un bouton supprimer apparait pour chaque ligne et j'aimerais qu'en cliquant dessus il supprimer la ligne désirée.

J'ai trouvé cela mais il ne fonctionne pas comme je le voudrais :
Code PHP :
<?php 

    function afficher($fichier, $separateur)
    {
      $tab = file($fichier);
      print "<TABLE BORDER=\"1\">";
      for($i=0;$i<count($tab);$i++)
      {
        print "<TR>";
        $sstab = explode($separateur, $tab[$i]);
        foreach ($sstab as $ssval)
        print "<TD>$ssval</TD>";
        print "<TD><A href=\"".$_SERVER['PHP_SELF']."?suppr=".$i."\">Supprimer</A><TD>";
        print "</TR>";
      }
      print "</TABLE>";
    } 


    if (!empty($_GET))
    {
        if (isset($_GET['suppr']))
        {
             $pFic = fopen ("affichage.txt", 'r');
             $tab = file("affichage.txt");
             $chaine ="";
             for ($i = 0; $i<count($tab);$i++)
             $chaine .= ($i!=$_GET['suppr']) ? $tab[$i] : ""; //C'est ici qu'on supprime la ligne sélectionnée
             fclose ($pFic);
         }
         $pFic = fopen ("affichage.txt", 'w');
         fputs ($pFic, $chaine);
        fclose ($pFic);
    }
?>


Et dans le corps de ma page :
Code PHP :
<? afficher("affichage.txt", " : ") ?>
Mon fichier texte comprenant plusieurs données par ligne séparé par ":". Le soucis est lorsque j'ai par exemple 10 lignes et que je supprime la ligne 8, il me supprime la ligne 9 et 10 aussi.

Merci d'avance.

sly
mercredi 13 octobre 2010 à 11:03:13 | Re : supprimer ligne fichier texte

007Julien

Effectivement avec une méthode GET, le formulaire est inutile. Les fopen et fclose du pFic sont tout aussi inutiles pour lire le fichier (d'ailleurs l'affichage se fait sans), ils ne servent qu'à le reconstituer en fin d'opération (avec la méthode (w) comme write).

La fermeture la case du tableau après le supprimer (</td> et non <td>) éviterait des cases inutiles, mais la question essentielle est quel est le but de l'opération supprimer des lignes entières ou seulement des portions distinguées par des séparateurs ?

Bonne continuation

mercredi 13 octobre 2010 à 11:07:59 | Re : supprimer ligne fichier texte

007Julien

Attention aussi aux rechargements de page (et à l'affichage préalable aux modifications) qui, en supprimant la ligne n peuvent progressivement supprimer toutes lignes suivantes...
mercredi 13 octobre 2010 à 13:18:01 | Re : supprimer ligne fichier texte

sly784965

C'est justement mon problème, les lignes suivantes par rapport à celles que j'ai supprimé se supprime lors du rechargement de la page. Le but est de supprimer une ligne entiere en cliquant sur le bouton supprimer lui correspondant dans le tableau.

sly
mercredi 13 octobre 2010 à 14:42:30 | Re : supprimer ligne fichier texte

007Julien

La meilleure solution semble alors un POST et un rechargement de page pour éviter les doubles enregistrements. Mais attention aux interventions croisées ! C'est un peu du bricolage pour travaux à domicile...

Si tel est le cas, j'aurais procédé comme suit :
Code PHP :
if (!empty($_POST) && $_POST["bouton"]=="Enregistrer"){
   // Enregistrer les suppressions de lignes
   //Lire le fichier texte
   $tab=file("affichage.txt");
   // Enregistrer une sauvegarde datée
   $tdy=date("ymd_His");
   $fis=fopen("affichage$tdy.txt","w");
   $fic=fopen("affichage.txt","w");
   for($i=0;$i<count($tab);$i++){
      fwrite($fis,$tab[$i]);
      if (empty($_POST["suppr".$i])) fwrite($fic,$tab[$i]);
   }
   fclose($fis);fclose($fic);
// Rechargement de la page 
   header('Location: http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
   exit;
}
// Afficher
$lgn=chr(10).chr(13); // Pour un source plus lisible
$chn='<form method="POST" action="'.$_SERVER['PHP_SELF'].'">'.$lgn;
$tab=file("affichage.txt");
for($i=0;$i<count($tab);$i++){
   $chn.='<input type="checkbox" name="suppr'.$i.'">';
   $sstab=explode(" : ", trim($tab[$i]));
   foreach ($sstab as $ssval) $chn.= '<span style="border:1px solid gray">'.$ssval.'</span>';
   $chn.='<br>'.$lgn;
}
$chn.='<input type="submit" name="bouton" value="Enregistrer"</form>';
Avec une fonction ou un simple
Code PHP :
<?php echo $chn ?>
dans le corps du programme.
mercredi 13 octobre 2010 à 19:44:18 | Re : supprimer ligne fichier texte

kohntark

Membre Club
Salut,

La meilleure solution semble alors un POST[...]


Je dirai qu'il y a sans doute plusieurs meilleures solutions
L'utilisation des XMLHTTPRequest étant certainement en haut de tableau.

Cordialement,

Kohntark -


Cette discussion est classée dans : fichier, ligne, code, texte, supprimer


Répondre à ce message

Sujets en rapport avec ce message

supprimer une ligne dans un ficheir texte !!!! [ par funghi ] salut à tous !!Pour alimenter un panier, php recupere les données (séparées par des tabultaions) dans un fichier texte .Jusque la tout va bien !mainte Saut de ligne ou préciser une ligne dans un fichier texte, [ par milkyoue ] Bonjour, Je voudrais savoir comment inscrire une ligne de caratère dans un fichier *.txt par exemple à la neuvième lignes, car il m'inscrit tout sur Un fichier texte pour plusieurs compteurs [ par bluejim ] blue_jim Ma question est la suivante :Est-il possible en Php de lire une ligne prédéfinie d'un fichier texte.J'explique :En partant du fait que la val fichier ??? [ par rich25200 ] Bonjour !!!j'ai un fichier....J'arrive a le lire mais je veux que lorsque dans mon fichier texte il y a un saut de ligne il me l'affiche dan un tablea Saut à la ligne et espacement [ par redpooka ] Voici mon code:texte Et je trouve qu'il y a trop d'espace entre le saut de ligne et le texte, comment faire pour mettre plus modifier une ligne dans un fichier texte S.O.S [ par MeTh ] Bonjour,j'ai besoin de modifier une ligne dans un fichier texte plus précisément .htx format spécifique pour un programme qui est en fait une page .ht Question de neebies!!!!!!! [ par defkrie ] Bonjour,jai une variable $chars qui contient le mot "aze" et un fichier texte "charts.txt". Dans ce fichier texte, à chaque ligne jai un mot du meme n passage à la ligne [ par cas ] Je possède un formulaire, dans lequel j'ai plusieurs champs texte "textearea". Quand j'appuie sur valider, je renseigne un fichier texte avec le conte extraire une ligne d'un fichier texte [ par matthieugregoire ] Bonjour à tous!!Je suis tout à fait novice dans l'usage de php et c'est pourquoi j'ai besoin que l'on me donne un petit coup de pouce. Je vous expose help > fichier texte : Aïe! [ par paprikarmasutra ] Salut,Voilà j'essaye de faire une petite tribune simple sans base MySQL, juste en mettant un fichier texte à jour en permanence. Le code fonctionne co


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales