IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Supprimer un mot dans un fichier


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 50
    Par défaut Supprimer un mot dans un fichier
    Bonjour, voilà, je souhaiterais procéder à la suppression d'un seul mot dans un fichier de données TXT figurant sur le serveur.

    En fait, ce fichier de données est sensé contenir une liste d'articles qui s'afficheraient dans une liste déroulante en XHTML.

    La suppression de l'article par l'administrateur dans la base de données mysql devrait mettre à jour la liste déroulante également en procédant en parallèle, à la suppression du même article dans le fichier de données TXT.

    Question, comment pourrais-je réaliser cette opération sachant que je ne peux utiliser la fonction FILE_GET_CONTENTS car ma version de PHP est la 4.4?

    Merci d'avance à qui aurait la réponse.

  2. #2
    FoxLeRenard
    Invité(e)
    Par défaut
    On peut supposer que chaque article fait une ligne du fichier texte

    Si c'est le cas opéres avec strpos (Depuis PHP 3)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <?PHP
    $valide=array();
    $pasbon="truc";
    $lui="tonfichier.txt";
    $Tab=file($lui);
    $NbrLig=count($Tab)-1;
    $b=0;
        for($a=0;$a<=$NbrLig;$a++)
          {
            //======== attention a ===  ===============
            if (strpos($Tab[$a], $pasbon)  === FALSE )
                {
                       $valide[$zb]=$Tab[$a];
                       $b++;
                 }  
          }
     
    ?>

  3. #3
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 377
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 377
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par abdel792 Voir le message
    La suppression de l'article par l'administrateur dans la base de données mysql devrait mettre à jour la liste déroulante également en procédant en parallèle, à la suppression du même article dans le fichier de données TXT.
    Dans ce cas plutôt que de supprimer stricto sensu le "mot" indésiré mieux vaut regénérer complètement le fichier texte à partir de la base de données à jour.

  4. #4
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Dans ce cas plutôt que de supprimer stricto sensu le "mot" indésiré mieux vaut regénérer complètement le fichier texte à partir de la base de données à jour.
    100% OK avec toi

    Du reste c'est juste son code que je lui corriges,
    mais oui la logique voudrait non seulement que l'outil de l' administrateur fasse les deux en même temps, mais surtout, pourquoi la page HTML n'est pas faite par un PHP qui lirait le MYSQL directement

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 50
    Par défaut
    Rebonjour tout le monde,

    Je tenais à vous remercier tous pour votre aide.

    Finalement, j'ai suivi les conseils de Seb.

    En fai, c'était un peu difficile, du fait que les articles étaient délimités par un point virgule.

    A la fin du dernier article écrit dans le fichier, il fallait enlever le point virgule sans quoi la liste déroulante ajoutait un article vide.

    Pour ce qui seraient intéressés de connaître le code que j'ai utilisé, je vous le colle ci-dessous.

    Si vous avez des remarques ou des commentaires, n'hésitez pas à m'en faire part.

    code :

    <?php
    include ("connexion.inc");//inclusion du fichier de connexion.
    extract ($_GET, EXTR_OVERWRITE);/*récupération de la variable reçue par la méthode get dans une variable locale sous la forme $NomDeLaVariable.
    Il s'agit de l'ID de l'article à supprimer.*/
    $article=mysql_query("select NomArticle from article where NumArticle=$NumArticle");
    if ($article)
    {//Notre requête a réussi.
    if (mysql_num_rows($article)>0)
    {//On vérifie quand même que cet article est réellement présent.
    $enregistrement=mysql_fetch_array($article);
    extract($enregistrement, EXTR_OVERWRITE);
    $ArticleASupprimer=$NomArticle;
    //On affecte la valeur du nom de l'article à supprimer à la variable $ArticleASupprimer.
    }
    }
    $requete=mysql_query("delete from article where NumArticle=$NumArticle");
    if ($requete)
    {//La requête à réussi.
    //On cherche les articles qu'il reste.
    $restant=mysql_query("select NomArticle from article order by NumArticle");
    if ($restant)
    {//La requête a réussi.
    if (mysql_num_rows($restant)>0)
    {//Il reste plus de zéro articles.
    $i=0;//initialisation du compteur.
    $LigneAEcrire="";//Initialisation de la variable qui va recueillir la ligne.
    $ResteLigne="";//initialisation de la variable qui va filtrer cette ligne en enlevant le dernier caractère.
    while ($restes=mysql_fetch_array($restant) and $i<count($restes))
    {
    extract($restes, EXTR_OVERWRITE);
    $LigneAEcrire.="$NomArticle;";//La variable prend la valeur de tous les articles présents dans la colonne NomArticle de la table.
    $i++;
    }
    for ($j=0;$j<strlen($LigneAEcrire)-1;$j++)
    {
    $ResteLigne.=$LigneAEcrire[$j];
    }
    $fichier="articles.txt";
    $majFichier=fopen($fichier, "w");
    if ($majFichier)
    {//Si le fichier a bien été ouvert en mode mise à jour.
    fputs($majFichier, $ResteLigne);
    fclose($majFichier);
    ?>
    <script type="text/javascript">
    window.alert("L'article <? echo $ArticleASupprimer;?> a été supprimé avec succès !");
    location="affichage_articles.php";
    </script>
    <?php }//Fermeture de la condition que le fichier a bien été ouvert.
    }
    else
    {//il reste zéro articles.
    unlink("articles.txt");
    }
    }
    else
    {//la requête $restant a échoué.
    ?>
    <script type="text/javascript">
    window.alert("Désolé, il nous est impossible de savoir combien il reste d'articles dans le magasin !");
    location="affichage.php";
    </script>
    <?php }
    }
    else
    {//La requête $requete a échoué.
    ?>
    <script type="text/javascript">
    window.alert("Désolé, l'article <? echo $ArticleASupprimer;?> n'a pas pu être supprimé !");
    location="affichage_articles.php";
    </script>
    <? }
    ?>

  6. #6
    FoxLeRenard
    Invité(e)
    Par défaut
    Salut et super !!

    PS: Peux tu mettre le code entre des balises

    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. supprimer un mot dans un fichier texte
    Par funmatica dans le forum Langage
    Réponses: 11
    Dernier message: 09/09/2013, 14h57
  2. supprimer des mots dans un fichier
    Par belgariel dans le forum Administration système
    Réponses: 1
    Dernier message: 30/10/2009, 12h01
  3. supprimer un mot dans un fichier texte
    Par coincoin22 dans le forum Linux
    Réponses: 10
    Dernier message: 14/08/2007, 15h28
  4. [LG]supprimer un enregistrement dans un fichier
    Par Marcus2211 dans le forum Langage
    Réponses: 10
    Dernier message: 17/11/2003, 00h59
  5. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 10h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo