<?php
# ----------------------------------------------------------------------------
# AUTEUR : BIOT CYRILLE <biot.cyrille@wanadoo.fr>
# DATE : 24 JANVIER 2001
#
# FUNCTION liste($a,$b,$c)
# Fonction permettant de générer le code HTML de l'objet HTML LISTE/MENU
# (balise <SELECT>) ainsi que de ses options associées :
# - size : déterminera s'il s'agit d'une LISTE ou d'un MENU,
# - multiple/unique : déterminera si le choix peut se porter sur une ou
# plusieurs entrées,
# en fonction d'un fichier source externe.
#
# Les paramètres de la fonction créée sont les suivants :
#
# liste($a,$b,$c) avec
# --- $a : nom du fichier appelé -- source
# (sans extension, même niveau d'arborescence)
# --- $b : option de la liste :
# - 0 : LISTE, Hauteur = nombre d'entrées du fichier source
# - 1 : MENU
# - n : LISTE, Hauteur = n
# --- $c : option nombre d'éléments sélectionnés
# - 0 : choix unique
# - 1 : choix multiple
#
# Le fichier source doit se situer au même niveau d'arborescence que le
# script. Par défaut l'extension associée est csv. Elle est facilement
# modifiable dans ce script.
# Les données de ce fichier auront la structure suivante :
# ENTREE_ECRAN:VALEUR:*
# ENTREE_ECRAN:VALEUR
#
# Le premier paramètre : texte à afficher dans la liste
# Le second paramètre : valeur de l'entrée (= variable)
# Le troisième paramètre est optionnel. Si il est présent (astérix *)
# il s'agira alors de l'entrée par défaut de la liste ou du menu.
# ...
# exemple : pour un fichier source linguistique :
# Allemand:de
# Français:fr
# Anglais:en:*
# ...
# Le délimitateur par défaut est les deux points ":".
# Modifiable dans le script, si besoin.
#
#
# ------------------------------------------------------
# FONCTION LISTE -- CODE SOURCE
#
function liste($a,$b,$c) {
# Spécifiez ici l'extension du fichier associé
$ext = "csv";
# Spécifiez ici le séparateur de champ
$del = ":";
$file = $a.".".$ext; // Fichier source
$fp = fopen ("$file","r"); // Ouverture fichier
#
# --------------------------------
# STYLE MENU - taille automatique
#
# (Si le paramètre $b de la fonction est de 0)
if ($b == 0) {
$nbligne = 0 ; // Initialisation variable
rewind($fp); // Positionnement début fichier
while (!feof($fp)) { // On compte
$buffer = fgets($fp,4096); // ...
$nbligne ++ ; } // les lignes
#
# --------------------------------
# STYLE LISTE -- TAILLE DEFINIE
#
# (si paramètre associé ($b) est de 1 alors on aura une liste
# si autre valeur (n) : Menu de la taille de cette valeur)
} else {
$nbligne = $b ;
}
#
# --------------------------------
# CHOIX MULTIPLES -- UNIQUE
#
# Si LISTE, le choix est forcément unique
if ($b == 1) {$c = "' " ;}
# Si MENU, alors on laisse le choix
if ($c == 0) {
# Choix unique
$c = "' ";
} else {
# Choix multiple : on passe les variables dans un tableau
# en vue d'une récupération postérieure dans un script PHP
$c = "[]' multiple" ;
}
#
# --------------------------------
# CODE HTML GENERE
#
# Définition HTML de la balise Liste / Menu
echo "<select name='$a$c size='$nbligne'>";
# Repositionnement début de fichier
rewind($fp);
# Lecture fichier de données
$fp = fopen ("$file", "r");
# Chargement des données du fichier associé
while ($data = fgetcsv ($fp, 1000,$del))
{
echo "<option value='$data[1]'";
if (!empty($data[2])) // Entrée par défaut ?
{echo "selected >"; // oui
} else {
echo ">";} // Non
echo $data[0]."</option>";
}
# FERMETURE FICHIER
fclose($fp);
# Fermeture balise HTML SELECT
echo "</select>";
} // fin de la fonction
#
# --------------------------------
# EXEMPLE
#
# Pour que cette fonction soit opérationnelle
# il suffit de l'appeler.
#
# test avec un fichier de données lang.csv