Enregistrer et lire des données de fichiers .ini Par Kyle Katarn www.openclassr

Enregistrer et lire des données de fichiers .ini Par Kyle Katarn www.openclassrooms.com Licence Creative Commons 6 2.0 Dernière mise à jour le 3/05/2011 Sommaire 2 Sommaire ........................................................................................................................................... 1 Partager .............................................................................................................................................. 3 Enregistrer et lire des données de fichiers .ini ................................................................................... 3 Pas de parse_ini_file dans ce tuto .................................................................................................................................... 4 Partie 1 : Les bases ............................................................................................................................ 4 Découverte du fichier ini .................................................................................................................................................... 4 Structure d'un fichier .ini .............................................................................................................................................................................................. 4 Explications ................................................................................................................................................................................................................. 5 Des exemples concrets d'utilisation ............................................................................................................................................................................ 5 Lire un fichier ini .......................................................................................................................................................................................................... 6 Récupérer une valeur ........................................................................................................................................................ 7 Création du code PHP ................................................................................................................................................................................................. 9 Le code PHP ............................................................................................................................................................................................................... 9 Formulaire de sélection ............................................................................................................................................................................................... 11 Les outils pour l'écriture ................................................................................................................................................... 11 Le chmod ................................................................................................................................................................................................................... 11 Les fonctions de manipulation de fichiers ................................................................................................................................................................. 11 fopen() et fclose() ...................................................................................................................................................................................................... 12 fwrite() ....................................................................................................................................................................................................................... 12 file_put_contents() ..................................................................................................................................................................................................... 13 Effacer pour mieux réécrire ....................................................................................................................................................................................... 16 Partie 2 : Une page de gestion des fichiers .ini ................................................................................. 16 Transformer un array ....................................................................................................................................................... 16 Changer une valeur ................................................................................................................................................................................................... 16 Ajouter un item ou un groupe .................................................................................................................................................................................... 16 Supprimer un item ou un groupe ............................................................................................................................................................................... 16 Du fichier à l'array ..................................................................................................................................................................................................... 17 De l'array au fichier ................................................................................................................................................................................................... 18 Un objet pour tout rassembler ......................................................................................................................................... 18 Qu'est-ce qu'un objet ? .............................................................................................................................................................................................. 18 Créer un objet ............................................................................................................................................................................................................ 20 Transmettre dans une SESSION .............................................................................................................................................................................. 20 Pour apprendre à se servir des objets ...................................................................................................................................................................... 21 Notre objet INI ................................................................................................................................................................. 21 Les méthodes une à une ........................................................................................................................................................................................... 21 m_fichier() ................................................................................................................................................................................................................. 22 m_groupe() ................................................................................................................................................................................................................ 22 m_item() .................................................................................................................................................................................................................... 22 m_put() ...................................................................................................................................................................................................................... 23 m_count() .................................................................................................................................................................................................................. 23 array_groupe() ........................................................................................................................................................................................................... 23 save() ........................................................................................................................................................................................................................ 24 clear() ........................................................................................................................................................................................................................ 25 s_fichier() ................................................................................................................................................................................................................... 25 s_groupe() ................................................................................................................................................................................................................. 25 s_item() ..................................................................................................................................................................................................................... 26 print_curseur() ........................................................................................................................................................................................................... 26 print_dossier() ........................................................................................................................................................................................................... 26 print_fichier() ............................................................................................................................................................................................................. 27 m_valeur() ................................................................................................................................................................................................................. 27 Le code PHP ............................................................................................................................................................................................................. 31 Trier les méthodes grâce à l'héritage ........................................................................................................................................................................ 31 Le formulaire ................................................................................................................................................................... 32 Le HTML .................................................................................................................................................................................................................... 34 Traitement PHP ......................................................................................................................................................................................................... 35 Conclusion ................................................................................................................................................................................................................ 36 Exemples ......................................................................................................................................................................... 36 Enregistrer des notes ................................................................................................................................................................................................ 38 Système de commentaires ........................................................................................................................................................................................ 39 Autres idées .............................................................................................................................................................................................................. 2/40 www.openclassrooms.com Enregistrer et lire des données de fichiers .ini Par Kyle Katarn Mise à jour : 03/05/2011 Difficulté : Facile Ce big-tuto est destiné à tous ceux qui se disent régulièrement : "c'est un peu con de faire une table dans ma base de données juste pour ça", à tous ceux qui n'ont pas de base de données mais qui souhaiteraient enregistrer des informations ; enfin, plus généralement, la sauvegarde INI a des avantages sur la base de données. Attention : un niveau correct en PHP et en HTML est nécessaire pour pouvoir comprendre ce tutoriel. Pas de parse_ini_file dans ce tuto Après de vifs commentaires, je me sens obligé de parler de cette fonction en introduction pour en être ensuite débarrassée Le langage ini est flexible. Il n'y a pas de règle stricte pour lire un fichier ini. parse_ini_file est une fonction qui lit sommairement les fichiers ini et renvoie un array simple. Dans ce tuto, nous utiliserons les fichiers ini pour le stockage de données, nous allons donc créer une fonction renvoyant un array à deux niveaux en utilisant le plein potentiel de ces fichiers. Je n'ai pas inventé cette technique mais sachez qu'après lecture du tuto, vous pourrez créer votre propre langage et l'adapter à vos besoins comme bon vous semble. Sommaire 3/40 www.openclassrooms.com Partie 1 : Les bases Cette partie vous apprendra ce qu'est un fichier .ini et comment s'en servir de sauvegarde. Découverte du fichier ini V oilà une question qui doit quand même trotter dans quelques têtes : C'est quoi ces fameux fichiers ini ? Alors, pour la petite histoire, "ini" est leur petit nom (leur extension), ils s'appellent en fait "fichiers d'initialisation" et sont omniprésents dans le système windows ; bien que les plus importants aient été remplacés par des bases de registre dans les dernières versions du système d'exploitation. V ous allez maintenant découvrir une de ces étranges créatures. Structure d'un fichier .ini Comme dit plus haut, les fichiers .ini portent l'extension .ini, mais leur contenu n'est constitué que de texte (un peu comme les fichiers .html ou .php). V oici à quoi ressemble un fichier .ini : Citation : exemple.ini [informations générales] date=12/02/06 candidat=Jean Dupont note=12 ;tout à fait correct [correction] date=15/02/06 correcteur=Janine Dujardin V oilà : dans cet exemple, j'ai imaginé qu'on veuille sauvegarder les informations relatives à chaque copie d'un examen dans un fichier. Ceci serait donc le fichier pour la copie de Jean Dupont. Explications La première ligne est le nom du groupe : "informations générales", toutes les données qui suivent appartiennent à ce groupe jusqu'à ce qu'on en change. Les trois lignes qui suivent sont des items, c'est-à-dire des valeurs stockées. Dans date=12/02/06, date est le nom de la variable et 12/02/06, son contenu. Enfin, la ligne écrite en vert est un commentaire, toute ligne commençant par un point virgule sera ignorée. Equivalent en php Code : PHP <?php $exemple["informations_generales"]=array( "date"=>"12/02/06", "candidat"=>"Jean Dupont", "note"=>"12" ); //tout à fait correct $exemple["correction"]=array( "date"=>"12/02/06", "correcteur"=>"Janine Dujardin" ); ?> Enregistrer et lire des données de fichiers .ini 4/40 www.openclassrooms.com Comme je vous le montre ci-dessus, la structure d'un fichier .ini est comparable à celle d'un array associatif à deux niveaux. Des exemples concrets d'utilisation Personnellement, les fichiers .ini m'ont servi dans une galerie d'images pour toutes les options et enregistrements. Ils m'ont aussi été utiles dans la création d'un jeu en ligne pour sauvegarder des informations telles que les compétences d'une race, ou encore les actions possibles sur une case de la map. Mais le .ini peut servir à plein d'autres choses : livre d'or ; chat ; système de vote (noter des vidéos par exemple). Lire un fichier ini Un fichier .ini se lit en pointant un curseur (virtuel) sur une variable. On va dire en langage PHP : "je choisis le fichier mon_fichier.ini, je vais dans le groupe mon_groupe et dans l'item mon_item". On peut maintenant récupérer la valeur à cet endroit et la modifier. Et en PHP, ça donne quoi ?? Effectivement on n'a toujours pas vu l'ombre d'un code PHP. Et ce qui va nous faciliter la vie pour trouver la manière de lire ces fichiers .ini, c'est que chaque ligne du fichier correspond à une instruction. Et si je demande quelle est la fonction PHP qui lit un fichier ligne par ligne, vous me répondez tous en coeur ... non ? ... Eh bien c'est file(), cette fonction magique qui retourne un tableau où chaque ligne est contenue dans une entrée du tableau. Et le deuxième outil qui va nous être utile : foreach. V oici donc comment lire ligne par ligne un fichier : Code : PHP <?php $tableau_de_lecture=file($fichier); foreach($tableau_de_lecture as $ligne) { // Ici on traite une ligne, par exemple, on peut compter la longueur de chaque ligne en faisant : echo strlen($ligne); } ?> Et maintenant, il nous faut détecter, pour chaque ligne, s'il y a ouverture de groupe ou un item. V oici un fichier que je vous conseille de prendre pour essayer de trouver le code : http://kyle.katarnls.free.fr/fichier_ini.zip. C'est une liste de membres avec différentes informations pour chacun, en imaginant qu'ils puissent remplir un formulaire sans renseigner tous les champs. Si on avait utilisé une base de données, il y aurait plein de champs vides et il faudrait changer la structure de la table à chaque fois qu'on rajoute une donnée au formulaire. V ous pouvez donc déjà constater un avantage de la méthode .ini. Bon : au boulot, je vous laisse chercher le code pour détecter, je le rappelle, les groupes et les items ... Secret (cliquez pour afficher) Code : PHP <?php if(file_exists($fichier) && $fichier_lecture=file($fichier)) foreach($fichier_lecture as $ligne) { if(preg_match("#^\[.+\]$#",$ligne)) //Des crochets au début et à la fin, ça, c'est un groupe, pardi ! else if(!preg_match("#^\;#",$ligne)) //S'il n'y a pas de point-virgule, ce n'est pas un commentaire //Donc c'est un item } else Partie 1 : Les bases 5/40 www.openclassrooms.com die("Le fichier est introuvable ou incompatible"); ?> Peut-être que certains n'aiment pas cette façon de coder et préfèrent quand il y a des accolades. Comme j'ai un avis partagé sur le sujet, je vous donne la version aérée : Secret (cliquez pour afficher) Code : PHP <?php if(file_exists($fichier) && $fichier_lecture=file($fichier)) { foreach($fichier_lecture as $ligne) { if(preg_match("#^\[.+\]$#",$ligne)) { //Des crochets au début et à la fin, ça, c'est un groupe, pardi ! } else { if(!preg_match("#^\;#",$ligne)) //S'il n'y a pas de point-virgule, ce n'est pas un commentaire { //Donc c'est un item } } } } else { die("Le fichier est introuvable ou incompatible"); } ?> V ous savez maintenant différencier les items des groupes à la lecture, nous allons dès le prochain chapitre récupérer notre première valeur. Partie 1 : Les bases 6/40 www.openclassrooms.com Récupérer une valeur Nous allons désormais afficher, à l'aide d'un code PHP, une valeur prélevée dans un fichier .ini grâce à vos nouvelles connaissances ! Création du code PHP Très bien : je vous suggère pour vos essais d'utiliser le fichier dans cette archive : http://kyle.katarnls.free.fr/fichier_ini.zip, de mettre membres.ini au même endroit que votre fichier .php. Avant de vous donner le uploads/S4/ 4214-enregistrer-et-lire-des-donnees-de-fichiers-ini 1 .pdf

  • 28
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Fev 11, 2021
  • Catégorie Law / Droit
  • Langue French
  • Taille du fichier 0.7756MB