Accueil > Manip’s > HTML > FORM > SELECT > PHP : Combo Dynamique
PHP
PHP : Combo Dynamique
SELECT
mercredi 22 février 2006, par
<?php
// *****************************************************************************
// * COMBO LISTE
// * Enregistre toute nouvelle entrée dqns une liste triée
// *****************************************************************************
define("_INIT_",0);
define("_ACTION_",1);
$_SELF=$_SERVER['PHP_SELF']; // Nom de la page elle même
// =============================================================================
// TESTE LE MODE D'ENTREE INIT = 0 si GET/POST est vide
// =============================================================================
//$mode = isset($_POST['mode']) ? $_POST['mode'] : _INIT_;
$mode = isset($_GET['mode']) ? $_GET['mode'] : _INIT_;
$texte = isset($_GET['texte']) ? $_GET['texte'] : "";
// =============================================================================
// LECTURE DU FICHIER DES LISTES (creation si n'existe pas)
// =============================================================================
$filename=basename($_SELF,".php")."_liste1.php"; // Rajoute Liste au nom du fichier actif
// *** Si n'existe pas le crée ***
if (!file_exists($filename))
{
touch ($filename); // Le fichier est cree vide
$TAB_lignes=array(); // Le tableau des lignes est cree vide
}
// *** Si existe le lit ***
else
{
$TAB_lignes=file($filename); // Les lignes lues sont placees ds le tableau
}
// =============================================================================
// SELON LE MODE D ENTREE
// =============================================================================
switch ($mode)
{
case _INIT_ :
// =============================================================================
// FORMULAIRE DE SAISIE
// =============================================================================
echo '<form name="F" action='.$_SELF.'>';
echo '<select name="liste" onChange="F.texte.value=F.liste.value";>';
foreach($TAB_lignes as $ligne){echo'<option>'.$ligne;}
echo '</select>';
echo '<input type="text" name="texte" value="">';
echo '<input type="hidden" name="mode" value="1">';
echo '<input type="reset">';
echo '<input type="submit">';
echo '</form>';
echo '<script>F.texte.focus();</script>';
break;
// *****************************************************************************
case _ACTION_ :
if (strlen(trim($texte))); // Si le texte est argumenté
{
$max = count($TAB_lignes); // Compte les lignes
//print $max;
foreach ($TAB_lignes as $ligne)
{
$ligne = str_replace("\n","",$ligne); // Attention au saut de ligne
// $tab[]=strtolower($ligne); // Comparaison insensible à la casse
@$tab[]=$ligne; // Remplit un Tableau Temporaire
}
//if (!array_search(strtolower($texte),$tab)) // Si l'occurnece est dans le tableau
if (!@array_search($texte,$tab)) // Si l'occurence est dans le tableau
{
$TAB_lignes = array_pad($TAB_lignes, $max+1,$texte); // Ajoute le texte
sort($TAB_lignes); // Tri par ordre
$_F = fopen ($filename, "w+"); // Ecrit dans un fichier
reset($TAB_lignes); // Pointe le début
foreach($TAB_lignes as $ligne)
{
$ligne = trim($ligne); // elimine les lignes vides
if (strlen($ligne))
{
fputs($_F,$ligne."\n"); // Rajoute un saut de ligne comme séparateur
};
}; // FOREACH
fclose ($_F);
}
};
echo '<meta http-equiv="refresh" content="0;URL=index.php?mode=0">';
break;
} // end(SWITH)
// *****************************************************************************
?>