BlueGEEK Journal

Accueil > Manip’s > HTML > FORM > SELECT > PHP : Combo Dynamique

PHP

PHP : Combo Dynamique

SELECT

mercredi 22 février 2006, par bluegyn_spip

<?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)

// *****************************************************************************

?>