Voici un petit script pratique lors de l'utilisation de menus déroulants
dynamiques à partir d'une variable array. Il permet en effet d'affecter
la valeur "selected" pour la valeur de votre choix.
<?
function ArraySelect($array,$value)
{
reset ($array);
while (list($key, $val) = each($array))
{
?> <option value="<?echo $key?>" <?echo
(($key == $value)? 'selected': ''); ?>> <?php echo $val;
?></option> <?
}
}
//-- exemple d'utilisation
$arr = array('1'=>'Janvier',
'2'=>'Février',
'3'=>'Mars',
'4'=>'Avril',
'5'=>'Mai',
'6'=>'Juin'
);
//-- on lance la fonction
?> <form method="post" action="<?echo
$PHP_SELF?>"> <select name="NomForm" size="1">
<option value="">Votre choix</option> <?php
ArraySelect($arr, 5); ?> </select> </form>
....;; |
|
Formulaire et $PHP_SELF
La variable $PHP_SELF représente le script courant. Si le
traitement de votre formulaire est sur la même page que le
formulaire lui même, utilisez:
echo "<form method='post' action='$PHP_SELF'>";
Et les valeurs du formulaire seront envoyées sur cette même
page. Vous pourrez donc naturellement changer le nom de la page
sans avoir à changer le paramètre action. Cela peut
s'avérer pratique lorsque vous distribuez un script : les
personnes pourront sans problème renommer les pages de formulaire.
|
Boîte de liste toujours de la
même largeur
Si vous voulez que vos boîtes de liste gardent toujours la même
largeur afin de ne pas perturber votre mise en page, il faut que le
texte soit toujours de la même longeur. Pour cela, il faut utiliser
la fonction sprintf.
<?
echo sprintf('%-30s',$texte);
?>
Ici, le texte sera rempli par des espaces afin de faire 30 caractères,
le texte étant à gauche. Si vous le voulez à
droite, il faut faire sprintf('%30s',$texte). |
Récupérer les valeurs
de plusieurs checkbox
<input type=checkbox name=var[] value="adresse@email.com">adresse@email.com
<input type=checkbox name=var[] value="adresse@email.fr">adresse@email.fr
<input type=checkbox name=var[] value="adresse2@email.tw">adresse2@email.tw
|
Et le code PHP correspondant qui traite
ce formulaire : <?
for ($i = 0; $i < count($var); $i++)
{
echo $var[$i];
}
?> |
Générer une liste déroulante
à partir d'une table
Un script tout simple qui permet de comprendre comment afficher
le contenu d'une table dans un menu de sélection (La table
est de la forme [valeur] [texte]) :
|
<?
echo '<select size=1 name="cat">'."\n";
echo '<option value="-1">Choisir un résultat<option>'."\n";
// Récupération des informations triées par ordre
alphabétique
$sql = "SELECT valeur, texte FROM ma_table ORDER BY texte";
$ReqLog = mysql_query($sql, $connexion);
while ($resultat = mysql_fetch_row($ReqLog)) {
echo '<option value="'.$resultat[0].'">'.$resultat[1];
echo '</option>'."\n";
}
echo '</select>'."\n";
?> |
Créer un formulaire avec une liste déroulante
provenant d''une base MySQL
|
<SELECT NAME='la_valeur'> <?
$result = mysql_query("SELECT champ FROM mabase WHERE mes_parametres");
while ($r = mysql_fetch_array($result)) {
$valeur = $r["le_champ_a_recuperer"];
if ($valeur == $valeur_du_champ_envoye_par_le_formulaire) {
echo "<option selected>".$valeur;
} else {
echo "<option>".$valeur;
}
}
?> </SELECT> |