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 :

Effacer un fichier avant sa réecriture


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut Effacer un fichier avant sa réecriture
    Bonjour,

    J'ai une fonction qui me permet de scanner un dossier et de les liens de tout les fichiers qu'il contient et de les écrire dans un fichier "siteMap.bdd.txt"

    J'aimerais cependant qu'a l'exécution de la fonction qu'il supprime le fichier.
    Car il est créer automatiquement a chaque exécution de la fonction.
    Si je ne le supprime pas il réécrit a la suite.


    Voici mon code:


    Fonction qui génère la base de donnée dans le fichier "siteMap.bdd.txt"
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    <?php
     
    // Parcourir un repertoire et ecrire tout les noms de fichiers le contenant,
    // sous forme de lien
    function parcoursRep($path,$i=1)
    {	
    	//Nom du fichier a creer
    	$filename = "siteMap.bdd.txt"; 
     
    	$folder[$i] = dir($path);
     
    	while($fichier = $folder[$i]->read())
    	{
    		// On vérifie si il s'agit d'un repertoire
    		if(is_dir($path."/".$fichier) && $fichier != "." && $fichier != "..")
    		{
    			// On parcours le nouveau repertoire
    			$sav_path = $path;
    			$path .= "/".$fichier;
    			parcoursRep($path,($i+1));
    			$path = $sav_path;
    		}
    		// Sinon on écrit le lien du fichier dans le fichier "$filename"
    		else if($fichier != "." && $fichier != "..")
    		{
    			if($fp = fopen($filename,"a"))// Ecriture seule. Pointeur en fin de fichier. Fichier créé si inexistant
    			fwrite($fp, "\n"); // Saut de ligne apres chaque lien
    			fwrite($fp, "".$path."/".$fichier.""); // On écrit le lien du fichier
    			fclose($fp); // Fermeture du fichier
    		}
    	}
    	$folder[$i]->close();
    }
    ?>

    On execute la fonction avec la page bddGenerator.php
    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
    20
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>plan site generator</title>
    </head>
    <body>
     
    <?php
    require $DOCUMENT_ROOT.('/bdd/planSiteGenerateur.inc.php');	
    /*
    Exemple d'appel de la fonction
    */
    $path= "includes";  // Parcours du repertoire courant (sans / a la fin)
    parcoursRep($path);
    ?>
     
    </body>
    </html>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Bonjour et bienvenu sur le forum,

    utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fp = fopen($filename,"w")
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut
    Merci,

    J'ai déjà essayé avec (w) mais le problème c'est que je suis dans une boucle donc j'obtiens seulement le dernier lien trouvé, les autres sont effacé.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    ton ouverture de fichier n'a rien a faire dans la boucle non ?
    tu ouvres ton fichier, tu ecris en boucle ce que tu veux, tu le refermes.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre actif Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Points : 221
    Points
    221
    Par défaut
    Son problème est qu'il veut ajouter à la fin du fichier le dernier fichier trouvé dans son dossier.
    Et il fait son ouverture de fichier dans la boucle de listage des dossier, donc s'il ouvre en w ça écrase ce qu'il a déjà écrit et s'il ouvre en a+ ça écrit à la fin de ce qui a été généré lors de son précédent appel de la fonction de mapping.

    Enfin si j'ai bien compris :p

    La solution est d'ouvrir en mode "w" ton fichier AVANT d'entrer dans la boucle, et de faire le fclose APRES la fin de la boucle.

    Sinon pour information il existe la fonction unlink() qui supprime le fichier dont le chemin a été passé en paramètre.

    EDIT :
    En fait j'avais mal compris le message de sabotage je viens de redire la même chose :-/

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

Discussions similaires

  1. Effacer un fichier
    Par Mr Hyde dans le forum Général Python
    Réponses: 6
    Dernier message: 19/11/2007, 22h49
  2. Réponses: 11
    Dernier message: 21/11/2005, 16h08
  3. tester l'extension d'un fichier avant d'uploader
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/02/2005, 15h12
  4. Mise en forme fichier avant Import
    Par jeff37 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/04/2004, 15h16
  5. [API WIN 32]effacer un fichier
    Par ben_iap dans le forum MFC
    Réponses: 2
    Dernier message: 30/01/2004, 13h51

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