ecriture auto des boites selection

hrz
Eléphant du PHP | 52 Messages

11 mars 2005, 18:33

l'ecriture des boites de selection devient vite une punition pour vous aussi:
cette petite fonction s'en chargera pour vous:
dans l'exemple ci dessous c'est pour la saisie d'un agenda avec date et heure pour des evenements a enregistre en BD

- vous choisissez le nom des variables
- le debut et la fin et l'incrementation de la numerotation des options
- la valeur de preselection
- les arrondis inf et sup a utilise pour un calcul de la preselection (si ? )
dans l'ex. qui suit un arrondi au 5 mn - ou - 2.5mn
- la liste des options pour l'affichage

 <?php
function select($nom_var,$debut,$fin,$step,$comp,$major,$minor,$txt){
	print "    <select name=\"$nom_var\" size=\"1\">\n";
	for ($loop=$debut;$loop <=$fin;$loop +=$step) {
	  if (is_array ($txt)){
	  	$option= $txt[$loop];
		}else{
		  if ($txt!="") {
		     $option=$loop.$txt;
		  }else{
		  $option=$loop;
		  }
		}
		if ($loop >= ($comp-$minor) and $loop <= ($comp+$major))  {
	    print "        <option value=\"$loop\" selected=\"selected\">$option</option>\n";
	    }else{
	    print "        <option value=\"$loop\">$option</option>\n";
	    }
	}
	print "    </select>\n";
}
?>
bon j'usque la ,ça ne dit pas grand chose.
un exemple pour la suite:
<?php
// les preliminaires ***************
$Langue="fr"; //  uk 
$Week=array(
    "fr"=>array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"),
    "uk"=>array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")
    );
$Mount=array(
    "fr"=>array("0","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Décembre"),
    "uk"=>array("0","January","Ferbuary","March","April","May","June","July","August","September","October","November","December")
    );
$event_start = time(); // timestamp UNIX pour l'exemple choisissez le votre 

/*  creation des boites de selection */

$select=date("w",$event_start); // le jour de la semaine
  $txt =array_slice($Week[$Langue],0);
  select("jour",0,6 ,1 ,$select ,0 ,0 ,$txt );
  unset($txt);

$select=date("j",$event_start); // le jour du mois
  select("day_start",1,31 ,1 ,$select ,0 ,0 ,"" );

$select=date("m",$event_start); // le mois 
  $txt =array_slice($Mount[$Langue],0);
  select("mount_start",1 ,12 ,1 ,$select ,0 ,0 ,$txt );
  unset ($txt);

$select=date("Y"); // l'annee
  select("year_start",$select-1,$select+5 ,1 ,$select ,0 ,0 ,"" );

$select=date("G",$event_start); // l'heure
  select("time_start",0 ,24,1,$select,0,0," h");

$select=date("i",$event_start); // les minutes par tranche de 5
  select("Minutes_start",0,60,5,$select,2.5,2.5," mn");

?>

et hop 12*24*365 possibilites valides a traitees :twisted: si on oubli de controler les jours de semaine qui se definissent naturellement .ils sont ici juste pour avoir une date complete et valide a l'affichage de preselect de la page
bon courage :lol: