Afficher section d'un fichier ini

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Afficher section d'un fichier ini

par zeus » 04 sept. 2008, 11:41

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)

par Invité » 04 sept. 2008, 09:42

Merci à vous deux pour vos réponses.

par sadeq » 03 sept. 2008, 15:35

<?php
$tableauIni = parse_ini_file("fichier_ini.ini",true);
foreach($tableauIni as $nom_sec=>$section) //pour chaque tableau (donc section)
{
	echo "<h5>$nom_sec</h5><ul>";
	foreach($section as $key=>$val) //parcours des valeurs
	{
		echo '<label>'.$val.'</label>'."\n";
		echo '<input name="'.$key.'[]" tabindex="11" type="checkbox" value="'.$val.'" />'."\n";
		echo '<br />'."\n";
	}
	echo "</ul>";
}
?>
Pour afficher les valeurs de chaque section d'une façon hiérarchisée.

par guilt92 » 03 sept. 2008, 15:32

si avant le début du deuxième foreach je met
<?php echo $section; ?>
il devrait m'afficher le nom de la section ?
Presque ;)

Le seul hic c'est que, quand tu regardes la structure du tableau, le nom de la section est une clé et non pas une valeur.
Si tu veux le nom de la section il faudra faire quelque chose comme :
<?php  
    $tableauIni = parse_ini_file("sample.ini",true);  
    foreach($tableauIni as $section_titre=>$section) //pour chaque tableau (donc section) 
        { 
		echo $section_titre."<br/>";
        foreach($section as $key=>$val) //parcours des valeurs 
            { 
            echo '<label>'.$val.'</label>'."\n";  
            echo '<input name="'.$key.'[]" tabindex="11" type="checkbox" value="'.$val.'" />'."\n";  
            echo '<br />'."\n";  
            } 
		echo "<br/><br/>-- FIN DE SECTION --<br/><br/>";
        }
?> 
Tu peux bien sur enlever le echo de fin de section ;)

par Invité » 03 sept. 2008, 15:27

Merci de ta réponse.

j'ai pas les outils pour tester actuellement mais si j'ai bien compris, si avant le début du deuxième foreach je met
<?php echo $section; ?>
il devrait m'afficher le nom de la section ?

Encore merci.

par guilt92 » 03 sept. 2008, 14:38

Ah ok.
Dans ton premier message tu parlais seulement d'affichage par section ;)

Dans ce cas effectivement le print_r ne te sert à rien.

En fait si tu mets la variable à "true" tu vas non plus avoir un tableau simple, mais un tableau de tableau, où chaque tableau est une section.

Il va donc falloir le parcourir section par section dans ton formulaire :
<?php 
    $tableauIni = parse_ini_file($fichier,true); 
	foreach($tableauIni as $section) //pour chaque tableau (donc section)
		{
		foreach($section as $key=>$val) //parcours des valeurs
			{
			echo '<label>'.$val.'</label>'."\n"; 
			echo '<input name="'.$key.'[]" tabindex="11" type="checkbox" value="'.$val.'" />'."\n"; 
			echo '<br />'."\n"; 
			}
		}
?>
Quelque chose dans ce genre ;)

Et si tu veux marquer une séparation entre tes sections il te suffit de rajouter des lignes entre la fin des deux foreach, ou au début du premier (si tu veux le nom de la section par exemple)

par Invité » 03 sept. 2008, 14:07

Merci d'avoir répondu.

J'ai déjà lu cet documentation mais comment faire du traitement dans le <pre> ?

dans mon code actuel je transforme les ligne en champ de formulaire, comme ceci :
<?php
	$tableauIni = parse_ini_file($fichier);
	while (list($key, $val) = each($tableauIni)) {
		echo '<label>'.$val.'</label>'."\n";
		echo '<input name="'.$key.'[]" tabindex="11" type="checkbox" value="'.$val.'" />'."\n";
		echo '<br />'."\n";
	}
?>
L'utilisation de la balise <pre> est elle adéquate ?
D'avance merci

par guilt92 » 03 sept. 2008, 14:01

Regarde la doc de parse_ini_file() tout est expliqué et tu as l'exemple de ce que tu veux faire :
// Analyse avec sections
$ini_array = parse_ini_file("sample.ini", true);
print_r($ini_array);
Utilise la fonction print_r plutot que ta boucle.
En gros il te suffit de faire :
$ini_array = parse_ini_file($fichier, true);
echo "<pre>";
print_r($ini_array);
echo "</pre>";

Afficher section d'un fichier ini

par Invité » 03 sept. 2008, 13:50

Bonjour,

Je n'ai rien inventé du tout.
Je liste le contenu d'un fichier ini et j'aimerais dissosier les section en plus des valeur, voici mon code :

Code : Tout sélectionner

Le fichier ini : ; Modul1 [modul1] A.1 = "action 1" A.2 = "action 2" A.3 = "action 3" ; Modul2 [modul2] B.1 = "action 1" B.2 = "action 2" B.3 = "action 3"
La boucle :
<?php
	$tableauIni = parse_ini_file($fichier);
	while (list($key, $val) = each($tableauIni)) {
		echo $key.' '.$val.'<br />';
	}
?>
Comment afficher les section pour que cela donne quelque chose du style :

Section1
Key Val
Key Val
Key Val


Section2
Key Val
Key Val
Key Val

Je sais qu'il va falloir passer parse_ini_file à TRUE mais après je me perd un peu dans les tableaux assosiatif.
D'avance merci.