javascript, javascripts, js, jscript, scripts, script, html, dhtml, dynamic, cookies, menu, frames, formulaire, source, code, gratuit, exemple, developper, html, php4, php3, php, mysql, liens, php2, forum, livre d'or, pages, web, dynamiques, programmation, webmasters, webmestres, tutorial, tutoriel, annuaires, espace, membres, banniéres, caddies, chats, compteurs, formulaires, forums, gestion, documentations, news, mailing, list, newsletter, moteurs, recherche, sondages, votes, statistiques, autres, agendas, calendriers, mail, annonces, audio, outils, réseaux, graphique, recommandation, site, sécurité, portail, creation, actualité, moteur de recherche, moteur, trucs, astuces, services, flash, action script, actionscript Tutoriaux : Php/MySQL
Script Masters : Javascript, Php, Mysql, html pour Webmasters!
 
    Script Masters
 
    Espace membre
 
    Langages
 
    Autres ressources
 
    Emploi avec Jobintree
 
    Ressources graphiques
 
    Recherche
 
    Kit graphique
 
    Liens
 
    Statistiques


 


Télécharger cet article au format PDF


Untitled Document
Utilisation avancée des fichiers


Tutorial écrit par : Daniel Fabien - Script Masters

 

   Introduction

 

 

Nous allons aborder ici l'utilisation de fonctions avancées. Attention, il peut s'avérer utile de posséder quelques notions élémentaires d'algorithmie pour comprendre le déroulement de ces scripts.
Nous verrons notamment l'insertion de donnée à une ligne bien précise du fichier, mais également la modification d'une ligne et enfin, une suppression.

 

Insertion d'une ligne



Imaginons que nous possédons un fichier contenant sur chacune de ces lignes un nombre

Contenu de fichier.txt :
102
564
665
1024

Ces nombres sont ordonnés de manière croissante à l'intérieur du fichier. Nous souhaitons alors ajouter le nombre " 952 " tout en maintenant l'ordre instauré. Il est donc nécessaire de l'ajouter en 4éme position. Voici un script permettant de le faire :

Script :
<?php

$fichier = "fichier.txt"; // Nom de votre fichier
$nombre = 952;
$fin = 0;

$fp = fopen($fichier,"r"); // Ouverture du fichier en lecture
$fp_temp = fopen("temp.txt","w+"); // Ouverture du fichier temporaire

while (!feof($fp)) { // Parcours du fichier
$ligne = fgets($fp,4000); // On récupère le nombre de la ligne
if ($ligne<=$nombre || $fin){ // Condition de placement
fwrite($fp_temp,$ligne);
} else { // Sinon, on place 952
fwrite($fp_temp,$nombre."\n");
fwrite($fp_temp,$ligne);
$fin = 1;
}
}

fclose($fp); // Fermeture du fichier
fclose($fp_temp);

copy("temp.txt",$fichier); // On recopie le fichier temporaire
unlink("temp.txt"); // On l'efface

?>

A la fin du script, nous obtenons le fichier suivant :

Contenu de fichier.txt :
102
564
665
952
1024

 

Le principe est très simple, on parcours le fichier original en lisant chaque ligne l'une après l'autre. Si la ligne contient un nombre inférieur ou égale à celui que nous souhaitons insérer, alors on se contente de recopier cette ligne dans le fichier temporaire.

En revanche, si cette condition n'est plus valide, alors on a trouvé l'emplacement correct. On insère alors le nombre, puis la dernière ligne. Enfin, on passe le booléen fin à vrai de façon à prendre le relais de la condition de placement qui forcement n'est plus vrai. Les dernières lignes sont donc recopiées dans le fichier temporaire.

Pour finir, on copie le contenu de ce fichier temporaire dans celui du fichier source et on efface le fichier temporaire. L'opération se fait donc de manière transparente.

L'intérêt de ce procédé ? Il est souvent bien moins coûteux en ressource d'effectuer un classement dès la création d'un fichier plutôt qu'a chaque fois qu'on accède au contenu de celui-ci.

 

Modification d'une ligne
 


A présent, nous souhaitons incrémenter une des valeurs du fichier. Nous savons que l'ancienne valeur vaut 952 et nous souhaitons la remplacer par 953.

Script :
<?php
// Modification d'une ligne

$fichier = "fichier.txt"; // Nom de votre fichier
$ancienNombre = 952; // nombre qu'on souhaite supprimer du fichier
$nouveauNombre = 953;

$fp = fopen($fichier,"r"); // Ouverture du fichier en lecture
$fp_temp = fopen("temp.txt","w+"); // Ouverture du fichier temporaire

while (!feof($fp)) { // Parcours du fichier
$ligne = fgets($fp,4000); // On récupère le nombre de la ligne
if ($ligne!=$ancienNombre){ // Condition de placement
fwrite($fp_temp,$ligne);
} else {
fwrite($fp_temp,$nouveauNombre."\n");
}
}

fclose($fp); // Fermeture du fichier
fclose($fp_temp);

copy("temp.txt",$fichier); // On recopie le fichier temporaire obtenu
unlink("temp.txt"); // On l'efface

?>

 

Contenu de fichier.txt avant exéctution du script:
102
564
665
952
1024

 

Contenu de fichier.txt après exéctution du script:
102
564
665
953
1024

 

Vous l'aurez compris, le déroulement de ce script est relativement simple par rapport au premier. En effet, il se contente de parcourir chaque ligne du fichier. Si la ligne est différente de celle recherchée, alors il la recopie, sinon, il recopie la ligne de remplacement.
Il peut également être utile de rechercher simplement une occurrence de la ligne. Pour cela, utilisez les expressions rationnelles. Nous l'aborderons dans un autre tutorial car nous risquons sinon de nous éloigner du sujet.

 

Suppression d'une ligne
 

 

De la même façon que précédemment, il est possible de supprimer une ligne d'un fichier.

 

Script :
<?php
// Supression d'une ligne

$fichier = "fichier.txt"; // Nom de votre fichier
$nombre = 952; // Nombre qu'on souhaite supprimer du fichier

$fp = fopen($fichier,"r"); // Ouverture du fichier en lecture
$fp_temp = fopen("temp.txt","w+"); // Ouverture du fichier temporaire

while (!feof($fp)) { // Parcours du fichier
$ligne = fgets($fp,4000); // On récupère le nombre de la ligne
if ($ligne!=$nombre){ // Condition de placement
fwrite($fp_temp,$ligne);
}
}

fclose($fp); // Fermeture du fichier
fclose($fp_temp);

copy("temp.txt",$fichier); // On recopie le fichier temporaire obtenu
unlink("temp.txt"); // On l'efface

?>

 

Contenu de fichier.txt avant exéctution du script:
102
564
665
952
1024

 

Contenu de fichier.txt après exéctution du script:
102
564
665
1024

 

Ce script ne diffère pas beaucoup du précédent. Au lieu de remplacer le nombre, il l'ignore, si bien qu'il n'est pas recopié dans le fichier temporaire.

 

Conclusion
 

 

Les méthodes vues au cours de ce tutorial ne sont pas universelles. Nous en parlons afin de vous donnez une idée de méthodes rapide pour modifier vos fichiers. Il est également utile de rappeler que chaque cas peut différer. Prenez donc surtout connaissance du principe.

Enfin, il ne faut pas oublié les bases de données qui sont bien plus efficaces que les fichiers lorsque vous avez un grand nombre d'informations et d'accès à effectuer.

 

- Un problème? Posez vos questions sur le forum Php/MySQL!
- Ce tutorial a été consulté 14118 fois


Script Masters © Ce texte est la propriété de son auteur.
Toute reproduction est interdite.

 




 
 
Fabien Daniel - © 2001-2009 | Hebergement : OVH | CNIL : 796128