La communauté ALL HTML c'est 58456 membres à ce jour dont 0 inscrits aujourd'hui et 29 depuis une semaine.
Cet article est actuellement publié sur le site.
Article publié le vendredi 09 février 2007 par FabHacker.
Cet article est classé dans les catégories « PHP »
Je vous propose une class Php à inclure dans vos script pour pouvoir gérer très simplement les listes déroulantes
<?php
// ------------------------------------
// CLASS SELECT
// Simplification de l'écriture des listes déroulantes
// par FabHacker
// ------------------------------------
/* LISTE DES FONCTIONS
Select($nom) - Constructeur
ajouter_choix($libelle,$valeur,$special) - Ajoute un choix
supprimer_choix($valeur) - Supprime un choix
template_defaut() - Définit le template par défaut
code_html() - Retourne le code HTML de la liste
reset() - Remet à zéro l'objet
*/
class Select {
var $nom; // Champ "name" de la balise select
var $choix; // Contient tous les choix possibles
var $template; // Définit le code HTML de la liste
// Constructeur
function Select($nom = '') {
$this->nom = $nom;
$this->choix = Array();
$this->template_defaut();
}
// Ajoute un choix à la liste
function ajouter_choix($libelle,$valeur,$special = '') {
$this->choix[] = Array($valeur,$libelle,$special);
}
// Supprime un choix à la liste
function supprimer_choix($valeur) {
$temp = Array();
for($i = 0; $i < sizeof($this->choix); $i++) {
if($this->choix[$i][0] != $valeur) $temp[] = $this->choix[$i];
}
$this->choix = $temp;
}
// Définit le template par défaut
function template_defaut() {
$this->template = Array(
'debut' => '<select name="%NOM%">' . "\n",
'option' => "\t" . '<option value="%VALEUR%"%SPECIAL%>%LIBELLE%</option>' . "\n",
'fin' => '</select>' . "\n"
);
}
// Retourne le code HTML de la liste
function code_html() {
$code = str_replace( Array('%NOM%') , Array($this->nom,$this->special[0]) ,$this->template['debut']);
$src = Array('%VALEUR%','%LIBELLE%','%SPECIAL%');
for($i = 0; $i < sizeof($this->choix); $i++) {
$dest = Array( $this->choix[$i][0] , htmlentities($this->choix[$i][1]) , $this->choix[$i][2] );
$code .= str_replace($src,$dest,$this->template['option']);
}
$code .= $this->template['fin'];
return $code;
}
// Remet à zéro l'objet
function reset($nom = '') {
if($nom != '') $this->nom = $nom;
$this->choix = Array();
$this->template_defaut();
}
}
?>$this->template = Array(
'debut' => '<select name="%NOM%">' . "\n",
'option' => "\t" . '<option value="%VALEUR%"%SPECIAL%>%LIBELLE%</option>' . "\n",
'fin' => '</select>' . "\n"
);<?php
include('class_select.php');
// Création de l'objet
$liste = new Select('voitureid');
// On ajoute les choix
$liste->ajouter_choix('Peugeot 306', 'p306');
$liste->ajouter_choix('Peugeot 406', 'p406');
$liste->ajouter_choix('Renault R5', 'r5' , ' style="color:blue;"'); // En bleu
$liste->ajouter_choix('Renault Concept Car 2007', 'concept');
$liste->ajouter_choix('Renault Laguna', 'rlag', ' selected'); // Selectionné au chargement
// Eventuellement en supprimer
$liste->supprimer_choix('concept');
// Ecriture du formulaire
$codepage = '
<form action="' . $PHP_SELF . '">
' . $liste->code_html() . '
<br /><input type="submit" value="Choisir" />
</form>
';
print($codepage);
?><form action="/outils/index.php">
<select name="voitureid">
<option value="p306">Peugeot 306</option>
<option value="p406">Peugeot 406</option>
<option value="r5" style="color:blue;">Renault R5</option>
<option value="rlag" selected>Renault Laguna</option>
</select>
<br /><input type="submit" value="Choisir" />
</form>