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 :

Comment lire en php et utiliser les variables d'un fichier.ini?


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut Comment lire en php et utiliser les variables d'un fichier.ini?
    Bonjour,

    J'ai appris sur le site de Zero, comment lire un fichier.ini, mais j'avoue que c'est beaucoup de chose du coup je suis un peu paumé.
    J'ai des variables de langues dans un fichier texte nommé langues.iniVoici le contenu de langues.ini:
    [Short lang]
    FR=fr
    EN=en
    DE=de
    IT=it
    ES=es

    [Text lang]
    Français=fr
    English=en
    Deutsch=de
    Italiano=it
    Espanol=es
    Le site de Zero me montre le chemin de comment récupérer un item spécifique en faisant ceci :
    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
    <?php
    $fichier="langues.ini";
    $groupe_recherche="Short lang";
    $item_recherche="EN";
    $valeur=false;
    if(file_exists($fichier) && $fichier_lecture=file($fichier))
       foreach($fichier_lecture as $ligne)
       {
         $ligne_propre=trim($ligne);
         if(preg_match("#^\[(.+)\]$#",$ligne_propre,$matches))
            $groupe=$matches[1];
         else
            if($ligne_propre[0]!=';')
                if($groupe==$groupe_recherche)
                    if(strpos($ligne,$item_recherche."=")===0)
                        $valeur=end(explode("=",$ligne,2));
                    elseif($ligne==$item_recherche)
                        $valeur='';
       }
    else
        echo "Le fichier est introuvable ou incompatible<br />";
     
    if($valeur===false)
        echo "Groupe ou item inexistant";
    else
        echo "Valeur trouvée : ".$valeur;
    ?>
    Or moi je cherche plutôt à lire et à stocker tous les items d'un groupe précis pour faire la liste des étiquette de langues : FR EN DE IT ES
    Quelque chose dans ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    //Je suppose que sur la page ID vaut 1
    foreach ($fichier_lecture as $ligne => $libelle) 
    {
    $printVar .= '<a href ="http://www.monsite.com/index.php?lang={$valeur}&ID='.$ID.'">{$libelle}&nbsp;</a>';
    }
    //Le résultat doit donner la liste des items de Short lang
    //autrement dit la liste des langues : FR EN DE IT ES
    //avec leur lien exemple pour FR : http://www.monsite.com/index.php?lang=fr&ID=1
    ?>
    Quelqu'un pourra t- il m'aider à le faire, j'avoue qu'avec le code de Zero, je ne comprends comment je peux l'adapter.
    D'avance je vous remercie beaucoup

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 24
    Points : 28
    Points
    28
    Par défaut
    Salut,

    Une fonction native PHP permet de parser un fichier INI et ses sections, pour en stocker le contenu dans un tableau.

    http://php.net/manual/fr/function.parse-ini-file.php

  3. #3
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Merci Eswiac pour ta réponse.
    J'ai lu ce que tu m'as indiqué. Mon niveau en php est malheureusement hyper débutant. Je n'ai pas su comment l'utiliser dans mon cas précis.
    Pourras-tu me donner un petit coup de pouce STP ?

    D'avance je te remercie

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 24
    Points : 28
    Points
    28
    Par défaut
    Pas de soucis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $ini_tableau = parse_ini_file("langues.ini", true);
    print_r($ini_tableau);
    Les arguments de parse_ini sont :
    - ton fichier à ouvrir, langues.ini
    - true, qui indique qu'il faut prendre en compte les sections du fichier ([Short lang] et [Text lang]

    La fonction te retourne le fichier langues.ini parsé et sous forme d'array (tableau).

    Exécute print_r($ini_tableau) et tu verras de quoi je parle

  5. #5
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Merci mais voici ce qu'il me donne comme réponse. C'est loin d'être ce que j'attend :
    Array ( [Short lang] => Array ( [FR] => fr [EN] => en [DE] => de [IT] => it [ES] => es ) [Text lang] => Array ( [Français] => fr [English] => en [Deutsch] => de [Italiano] => it [Espanol] => es ) )
    Je cherchais à afficher que le groupe de mon choix soit : les items de Short lang mais sans toutes ces choses. FR : fr EN : en etc.

    Encore merci baeaucoup pour ta patience

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 24
    Points : 28
    Points
    28
    Par défaut
    Essaie de faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    echo "<pre>";
    print_r($ini_tableau['Short lang']);
    print_r($ini_tableau['Text lang']);
    echo "</pre>";
    En faisant appel à la myriade de fonctions PHP ayant trait aux tableaux, tu peux manipuler et relier comme tu veux ces deux tableaux, qui représentent les données de ton fichier ini.

  7. #7
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Merci.
    J'ai fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ini_tableau = parse_ini_file("membres.ini", true);
    echo "<pre>";
    print_r($ini_tableau['Short lang']);
    echo "</pre>";
    J'ai eu ceci:
    Array
    (
    [FR] => fr
    [EN] => en
    [DE] => de
    [IT] => it
    [ES] => es
    )
    Je cherche à récupérer tout simplement l'étiquette et sa valeur du genre:
    echo $key.' : '.$valeur.<br /> Pour l'instant, je n'ai que Array etc qui sort et je ne sais pas comment l'utiliser.

  8. #8
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    J'ai ce code qui fait ce que je veux mais ne me permet pas de sélectionner le groupe .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $fichier = 'langues.ini';
    $tableauIni = parse_ini_file($fichier);
    while (list($key, $val) = each($tableauIni)) 
    {
    echo $key.' : '.$val.'<br />';
    }

  9. #9
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Je suis arrivé à le faire. Mais il me reste juste que le code affiche les données du groupe voulu et non toutes les données du fichier.ini
    Voci mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ID = 1;
    $monTableau = parse_ini_file("membres.ini");
    foreach($monTableau as $cle => $valeur) 
        { 
        echo "<a href =\"http://www.monsite.com/index.php?lang={$valeur}&ID=$ID\">{$cle}</a>&nbsp;&nbsp;";
        } 
     
    ?>
    Il me reste à lui dire à quelque part que je veux uniquement les données Du groupe $monTableau['Short lang']

    D'avance je vous remercie beaucoup

  10. #10
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Bon je me suis tapé 2 heures de manuel php. C'est bon. Je livre ici la réponse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php $ID = 1;
    $monTableau = parse_ini_file("membres.ini",true);
    foreach($monTableau['Text lang'] as $cle => $valeur) 
        { 
        echo "<a href =\"http://www.monsite.com/index.php?lang={$valeur}&ID=$ID\">{$cle}</a>&nbsp;&nbsp;";
        }

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 08/04/2010, 14h48
  2. Réponses: 15
    Dernier message: 28/06/2007, 19h28
  3. Réponses: 3
    Dernier message: 09/01/2007, 09h44
  4. [2.0] Comment utiliser les variables de session ?
    Par batosai dans le forum ASP.NET
    Réponses: 11
    Dernier message: 03/05/2006, 15h49
  5. [VB]Comment utiliser les variables Windows?
    Par Furius dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 13/10/2005, 21h20

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